PrivacySettings.java revision 2c53933e8d35ba50d0791a29e46fa3156e9cab7c
1e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani/*
2e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * Copyright (C) 2009 The Android Open Source Project
3e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani *
4e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * Licensed under the Apache License, Version 2.0 (the "License");
5e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * you may not use this file except in compliance with the License.
6e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * You may obtain a copy of the License at
7e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani *
8e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani *      http://www.apache.org/licenses/LICENSE-2.0
9e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani *
10e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * Unless required by applicable law or agreed to in writing, software
11e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * distributed under the License is distributed on an "AS IS" BASIS,
12e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * See the License for the specific language governing permissions and
14e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * limitations under the License.
15e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani */
16e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
17e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasanipackage com.android.settings;
18e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
19e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.app.AlertDialog;
20e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.app.Dialog;
21616c3ee12a65696f43e62931631ba092884ad3fdChristopher Tateimport android.app.backup.IBackupManager;
22e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.content.ContentResolver;
23e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.content.Context;
24e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.content.DialogInterface;
25df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tateimport android.content.Intent;
26e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.os.Bundle;
27e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.os.RemoteException;
28e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.os.ServiceManager;
292c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynoldsimport android.os.UserManager;
30e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.preference.CheckBoxPreference;
31e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.preference.Preference;
32e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.preference.PreferenceScreen;
33e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasaniimport android.provider.Settings;
34e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
35e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani/**
36e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani * Gesture lock pattern settings.
37e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani */
38d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasanipublic class PrivacySettings extends SettingsPreferenceFragment implements
3930e4d965121ae7f049f090862a5c246515a0bf34Bjorn Bringert        DialogInterface.OnClickListener {
40e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
41e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    // Vendor specific
42ecfeaffdfa19bea836f24fd399376825c377eaa9Bjorn Bringert    private static final String GSETTINGS_PROVIDER = "com.google.settings";
43a5a67306a4c7a066d97802333a473be94661e091Christopher Tate    private static final String BACKUP_CATEGORY = "backup_category";
44aa1f8aeeea1c27fe88270cc8b5df970d9f292385Kenny Root    private static final String BACKUP_DATA = "backup_data";
45a5a67306a4c7a066d97802333a473be94661e091Christopher Tate    private static final String AUTO_RESTORE = "auto_restore";
4658e62926b9ceca72275b657b2fa7b9e54fc1a931Christopher Tate    private static final String CONFIGURE_ACCOUNT = "configure_account";
472c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynolds    private static final String PERSONAL_DATA_CATEGORY = "personal_data_category";
48df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate    private IBackupManager mBackupManager;
49e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    private CheckBoxPreference mBackup;
50a5a67306a4c7a066d97802333a473be94661e091Christopher Tate    private CheckBoxPreference mAutoRestore;
51e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    private Dialog mConfirmDialog;
52df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate    private PreferenceScreen mConfigure;
53e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
54e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    private static final int DIALOG_ERASE_BACKUP = 2;
5570bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    private int mDialogType;
56e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
57e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    @Override
58d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani    public void onCreate(Bundle savedInstanceState) {
59e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        super.onCreate(savedInstanceState);
60e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        addPreferencesFromResource(R.xml.privacy_settings);
61a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        final PreferenceScreen screen = getPreferenceScreen();
62e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
63df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        mBackupManager = IBackupManager.Stub.asInterface(
64df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate                ServiceManager.getService(Context.BACKUP_SERVICE));
65df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate
66aa1f8aeeea1c27fe88270cc8b5df970d9f292385Kenny Root        mBackup = (CheckBoxPreference) screen.findPreference(BACKUP_DATA);
67a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        mAutoRestore = (CheckBoxPreference) screen.findPreference(AUTO_RESTORE);
6858e62926b9ceca72275b657b2fa7b9e54fc1a931Christopher Tate        mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_ACCOUNT);
69e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
702c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynolds        if (UserManager.get(getActivity()).hasUserRestriction(
712c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynolds                UserManager.DISALLOW_FACTORY_RESET)) {
722c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynolds            screen.removePreference(findPreference(PERSONAL_DATA_CATEGORY));
732c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynolds        }
742c53933e8d35ba50d0791a29e46fa3156e9cab7cJulia Reynolds
75e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        // Vendor specific
76d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani        if (getActivity().getPackageManager().
77d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani                resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) {
78a5a67306a4c7a066d97802333a473be94661e091Christopher Tate            screen.removePreference(findPreference(BACKUP_CATEGORY));
79e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        }
80e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        updateToggles();
81e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
82e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
83e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    @Override
8470bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    public void onResume() {
8570bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        super.onResume();
8670bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio
8770bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        // Refresh UI
8870bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        updateToggles();
8970bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    }
9070bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio
9170bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    @Override
92e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    public void onStop() {
93e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        if (mConfirmDialog != null && mConfirmDialog.isShowing()) {
94e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            mConfirmDialog.dismiss();
95e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        }
96e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        mConfirmDialog = null;
97e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        mDialogType = 0;
98e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        super.onStop();
99e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
100e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
101e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    @Override
102e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
103e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            Preference preference) {
10430e4d965121ae7f049f090862a5c246515a0bf34Bjorn Bringert        if (preference == mBackup) {
105e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            if (!mBackup.isChecked()) {
106e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                showEraseBackupDialog();
107e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            } else {
108e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                setBackupEnabled(true);
109e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            }
110a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        } else if (preference == mAutoRestore) {
111fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            boolean curState = mAutoRestore.isChecked();
112fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            try {
113fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate                mBackupManager.setAutoRestore(curState);
114fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate            } catch (RemoteException e) {
115fac0ea781f0c99a446ab6588006b2ac0330cb774Christopher Tate                mAutoRestore.setChecked(!curState);
116a5a67306a4c7a066d97802333a473be94661e091Christopher Tate            }
117e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        }
118b14e1e04939ca610fd5f2439f879265450b0a6cdAmith Yamasani        return super.onPreferenceTreeClick(preferenceScreen, preference);
119e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
120e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
121e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    private void showEraseBackupDialog() {
122e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        mBackup.setChecked(true);
123e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
124e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        mDialogType = DIALOG_ERASE_BACKUP;
125e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        CharSequence msg = getResources().getText(R.string.backup_erase_dialog_message);
126d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani        // TODO: DialogFragment?
127d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani        mConfirmDialog = new AlertDialog.Builder(getActivity()).setMessage(msg)
128e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                .setTitle(R.string.backup_erase_dialog_title)
129e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                .setPositiveButton(android.R.string.ok, this)
130e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                .setNegativeButton(android.R.string.cancel, this)
131e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                .show();
132e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
133e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
134e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    /*
135e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani     * Creates toggles for each available location provider
136e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani     */
137e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    private void updateToggles() {
138e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        ContentResolver res = getContentResolver();
139a5a67306a4c7a066d97802333a473be94661e091Christopher Tate
140df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        boolean backupEnabled = false;
141df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        Intent configIntent = null;
142df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        String configSummary = null;
143df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        try {
144df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate            backupEnabled = mBackupManager.isBackupEnabled();
145df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate            String transport = mBackupManager.getCurrentTransport();
146df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate            configIntent = mBackupManager.getConfigurationIntent(transport);
147df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate            configSummary = mBackupManager.getDestinationString(transport);
148df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        } catch (RemoteException e) {
149df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate            // leave it 'false' and disable the UI; there's no backup manager
150df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate            mBackup.setEnabled(false);
151df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        }
152a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        mBackup.setChecked(backupEnabled);
153a5a67306a4c7a066d97802333a473be94661e091Christopher Tate
154a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        mAutoRestore.setChecked(Settings.Secure.getInt(res,
155c99cffbffcf38f0e6bf10c9ff541b1bb5180316eChristopher Tate                Settings.Secure.BACKUP_AUTO_RESTORE, 1) == 1);
156a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        mAutoRestore.setEnabled(backupEnabled);
157df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate
15870bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        final boolean configureEnabled = (configIntent != null) && backupEnabled;
15970bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        mConfigure.setEnabled(configureEnabled);
160df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        mConfigure.setIntent(configIntent);
16170bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        setConfigureSummary(configSummary);
1624f33878f208e729cf96b708c57686555d2493129Christopher Tate}
16370bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio
16470bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    private void setConfigureSummary(String summary) {
16570bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        if (summary != null) {
16670bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio            mConfigure.setSummary(summary);
167df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        } else {
16858e62926b9ceca72275b657b2fa7b9e54fc1a931Christopher Tate            mConfigure.setSummary(R.string.backup_configure_account_default_summary);
169df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        }
170e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
171e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
17270bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    private void updateConfigureSummary() {
17370bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        try {
17470bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio            String transport = mBackupManager.getCurrentTransport();
17570bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio            String summary = mBackupManager.getDestinationString(transport);
17670bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio            setConfigureSummary(summary);
17770bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        } catch (RemoteException e) {
17870bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio            // Not much we can do here
17970bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        }
18070bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio    }
18170bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio
182e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    public void onClick(DialogInterface dialog, int which) {
183e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        if (which == DialogInterface.BUTTON_POSITIVE) {
184e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            //updateProviders();
18530e4d965121ae7f049f090862a5c246515a0bf34Bjorn Bringert            if (mDialogType == DIALOG_ERASE_BACKUP) {
186e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                setBackupEnabled(false);
18770bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio                updateConfigureSummary();
188e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            }
189e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        }
190e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        mDialogType = 0;
191e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
192e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani
193e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    /**
194e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani     * Informs the BackupManager of a change in backup state - if backup is disabled,
195e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani     * the data on the server will be erased.
196e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani     * @param enable whether to enable backup
197e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani     */
198e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    private void setBackupEnabled(boolean enable) {
199df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate        if (mBackupManager != null) {
200e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            try {
201df6a7e55ccffd4a8b17780ee07b9f11988b98aaaChristopher Tate                mBackupManager.setBackupEnabled(enable);
202e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            } catch (RemoteException e) {
203e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                mBackup.setChecked(!enable);
204a5a67306a4c7a066d97802333a473be94661e091Christopher Tate                mAutoRestore.setEnabled(!enable);
205e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani                return;
206e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani            }
207e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        }
208e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani        mBackup.setChecked(enable);
209a5a67306a4c7a066d97802333a473be94661e091Christopher Tate        mAutoRestore.setEnabled(enable);
21070bc797a926abdf14bc0d34d9b49a066663fbca7Fabrice Di Meglio        mConfigure.setEnabled(enable);
211e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani    }
212b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani
213b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani    @Override
214b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani    protected int getHelpResource() {
215b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani        return R.string.help_url_backup_reset;
216b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani    }
217e65c943f974966e21c6f18dc9a95107ea1f07631Amith Yamasani}
218