summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-02-10 13:57:30 -0800
committerJohn Reck <jreck@google.com>2011-02-10 14:24:25 -0800
commit7726377098da1b8a48d66d557490084cdd52680d (patch)
tree365742a47be07d3394299e267e2370574a4ccfd3
parentd43beeb291c0d28e3fafe1b06570b94544c44d27 (diff)
downloadpackages_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.xml1
-rw-r--r--src/com/android/browser/preferences/GeneralPreferencesFragment.java38
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.