10

在过去的几天里,我一直在尝试使用 Android SDK,准备为商店编写一个应用程序,但是我遇到了一些问题。

我将要编写的应用程序要求用户拥有与手机关联的 Google 帐户。检索和使用 Auth 令牌等不是问题,但是我希望能够通过菜单 Settings->Accounts->Add Account 显示用户可以正常访问的活动。

现在通过实验,我已经能够使用以下命令从 shell 启动此活动。

am start -n com.google.android.gsf/.login.AccountIntroActivity

我无法使用 Intent 类在 JAVA 中执行相同的操作。

谁能告诉我首先这是否可以通过 JAVA 完成,其次我该怎么做?

如果我必须适应同步设置屏幕,那么我会(这可以通过 Settings.ACTION_SYNC_SETTINGS 意图实现),但是能够将用户直接引导到所需的屏幕会非常好。

4

6 回答 6

15

查看ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
于 2010-08-26T13:42:45.853 回答
3

尝试以下操作:

public static void addGoogleAccount(final Activity activity) {
    final AccountManager accountMgr = AccountManager.get(activity);
    accountMgr.addAccount("com.google", "my_auth_token", null, null, activity, null, null);
}
于 2010-11-08T15:10:27.850 回答
3

通过在意图额外数据中提供 EXTRA_ACCOUNT_TYPES 来回答上述问题。并将值设置为“com.google”以提醒活动:

public static void startAddGoogleAccountIntent(Context context){
Intent addAccountIntent = new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
addAccountIntent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[] {"com.google"});
context.startActivity(addAccountIntent); }
于 2016-02-10T08:43:42.767 回答
2

Android Account Manager 提供了一个 API 来添加帐户。(谷歌或其他帐户类型)

public AccountManagerFuture addAccount (String accountType, String authTokenType, String[] requiredFeatures, Bundle addAccountOptions, Activity 活动, AccountManagerCallback 回调, Handler handler)

http://developer.android.com/reference/android/accounts/AccountManager.html

于 2011-11-03T22:02:06.067 回答
1

线索在你的 shell 命令中:

    Intent intent = new Intent();
    intent.setClassName( "com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity" );
    context.startActivity( intent );
于 2011-08-01T12:03:07.850 回答
1

对于最近使用的 Android,adb您可以执行以下操作:

adb shell am start -a android.settings.ADD_ACCOUNT_SETTINGS \
                   -n com.android.settings/.accounts.AddAccountSettings

(您仍然必须选择您想要的帐户类型)

于 2019-08-22T07:18:04.420 回答