FileDocCategorySizeDatePackage
MasterClear.javaAPI DocAndroid 1.5 API7830Wed May 06 22:42:48 BST 2009com.android.settings

MasterClear

public class MasterClear extends android.app.Activity
Confirm and execute a reset of the device to a clean "just out of the box" state. Multiple confirmations are required: first, a general "are you sure you want to do this?" prompt, followed by a keyguard pattern trace if the user has defined one, followed by a final strongly-worded "THIS WILL ERASE EVERYTHING ON THE PHONE" prompt. If at any time the phone is allowed to go to sleep, is locked, et cetera, then the confirmation sequence is abandoned.

Fields Summary
private static final int
KEYGUARD_REQUEST
private android.view.LayoutInflater
mInflater
private com.android.internal.widget.LockPatternUtils
mLockUtils
private android.view.View
mInitialView
private android.widget.Button
mInitiateButton
private android.view.View
mFinalView
private android.widget.Button
mFinalButton
private Button.OnClickListener
mFinalClickListener
The user has gone through the multiple confirmation, so now we go ahead and invoke the Checkin Service to reset the device to its factory-default state (rebooting in the process).
private Button.OnClickListener
mInitiateListener
If the user clicks to begin the reset sequence, we next require a keyguard confirmation if the user has currently enabled one. If there is no keyguard available, we simply go to the final confirmation prompt.
Constructors Summary
Methods Summary
private voidestablishFinalConfirmationState()
Configure the UI for the final confirmation interaction


                 
       
        if (mFinalView == null) {
            mFinalView = mInflater.inflate(R.layout.master_clear_final, null);
            mFinalButton =
                    (Button) mFinalView.findViewById(R.id.execute_master_clear);
            mFinalButton.setOnClickListener(mFinalClickListener);
        }

        setContentView(mFinalView);
    
private voidestablishInitialState()
In its initial state, the activity presents a button for the user to click in order to initiate a confirmation sequence. This method is called from various other points in the code to reset the activity to this base state.

Reinflating views from resources is expensive and prevents us from caching widget pointers, so we use a single-inflate pattern: we lazy- inflate each view, caching all of the widget pointers we'll need at the time, then simply reuse the inflated views directly whenever we need to change contents.

        if (mInitialView == null) {
            mInitialView = mInflater.inflate(R.layout.master_clear_primary, null);
            mInitiateButton =
                    (Button) mInitialView.findViewById(R.id.initiate_master_clear);
            mInitiateButton.setOnClickListener(mInitiateListener);
        }

        setContentView(mInitialView);
    
protected voidonActivityResult(int requestCode, int resultCode, android.content.Intent data)

        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode != KEYGUARD_REQUEST) {
            return;
        }

        // If the user entered a valid keyguard trace, present the final
        // confirmation prompt; otherwise, go back to the initial state.
        if (resultCode == Activity.RESULT_OK) {
            establishFinalConfirmationState();
        } else {
            establishInitialState();
        }
    
protected voidonCreate(android.os.Bundle savedState)

        super.onCreate(savedState);

        mInitialView = null;
        mFinalView = null;
        mInflater = LayoutInflater.from(this);
        mLockUtils = new LockPatternUtils(getContentResolver());

        establishInitialState();
    
public voidonPause()
Abandon all progress through the confirmation sequence by returning to the initial view any time the activity is interrupted (e.g. by idle timeout).

        super.onPause();

        establishInitialState();
    
private voidrunKeyguardConfirmation()
Keyguard validation is run using the standard {@link ConfirmLockPattern} component as a subactivity


                       
       
        final Intent intent = new Intent();
        intent.setClassName("com.android.settings",
                "com.android.settings.ConfirmLockPattern");
        // supply header and footer text in the intent
        intent.putExtra(ConfirmLockPattern.HEADER_TEXT,
                getText(R.string.master_clear_gesture_prompt));
        intent.putExtra(ConfirmLockPattern.FOOTER_TEXT,
                getText(R.string.master_clear_gesture_explanation));
        startActivityForResult(intent, KEYGUARD_REQUEST);