diff options
author | John Reck <jreck@google.com> | 2011-02-10 13:57:30 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-02-10 14:24:25 -0800 |
commit | 7726377098da1b8a48d66d557490084cdd52680d (patch) | |
tree | 365742a47be07d3394299e267e2370574a4ccfd3 | |
parent | d43beeb291c0d28e3fafe1b06570b94544c44d27 (diff) | |
download | packages_apps_Browser-7726377098da1b8a48d66d557490084cdd52680d.zip packages_apps_Browser-7726377098da1b8a48d66d557490084cdd52680d.tar.gz packages_apps_Browser-7726377098da1b8a48d66d557490084cdd52680d.tar.bz2 |
Add account for Chrome Sync if none exist
Bug: 3408686
Change-Id: I0db1808930d7543eea97bffe67d02382b0bea3a2
-rw-r--r-- | AndroidManifest.xml | 1 | ||||
-rw-r--r-- | src/com/android/browser/preferences/GeneralPreferencesFragment.java | 38 |
2 files changed, 38 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c32b76a..8ac2c87 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -35,6 +35,7 @@ <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> + <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/> <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java index 33bfd9c..1c82e1c 100644 --- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java +++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java @@ -25,6 +25,8 @@ import com.android.browser.widget.BookmarkThumbnailWidgetProvider; import android.accounts.Account; import android.accounts.AccountManager; +import android.accounts.AccountManagerCallback; +import android.accounts.AccountManagerFuture; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; @@ -132,6 +134,40 @@ public class GeneralPreferencesFragment extends PreferenceFragment }; + private AccountManagerCallback<Bundle> mCallback = + new AccountManagerCallback<Bundle>() { + + @Override + public void run(AccountManagerFuture<Bundle> future) { + try { + Bundle bundle = future.getResult(); + String name = bundle.getString(AccountManager.KEY_ACCOUNT_NAME); + String type = bundle.getString(AccountManager.KEY_ACCOUNT_TYPE); + Account account = new Account(name, type); + Fragment frag = new ImportWizardDialog(); + Bundle extras = mChromeSync.getExtras(); + extras.putParcelableArray("accounts", new Account[] { account }); + frag.setArguments(extras); + getFragmentManager().beginTransaction() + .add(frag, null) + .commit(); + } catch (Exception ex) { + // Canceled or failed to login, doesn't matter to us + } + } + }; + + OnPreferenceClickListener mAddAccount = new OnPreferenceClickListener() { + + @Override + public boolean onPreferenceClick(Preference preference) { + AccountManager am = AccountManager.get(getActivity()); + am.addAccount("com.google", null, null, null, getActivity(), + mCallback, null); + return true; + } + }; + private class GetAccountsTask extends AsyncTask<Void, Void, String> { private Context mContext; @@ -146,7 +182,7 @@ public class GeneralPreferencesFragment extends PreferenceFragment if (accounts == null || accounts.length == 0) { // No Google accounts setup, don't offer Chrome sync if (mChromeSync != null) { - getPreferenceScreen().removePreference(mChromeSync); + mChromeSync.setOnPreferenceClickListener(mAddAccount); } } else { // Google accounts are present. |