在Android 2.2中以编程方式启动“添加帐户”活动

问题描述 投票:10回答:6

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

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

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

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

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

首先有人可以告诉我是否可以通过JAVA完成此操作,其次请问我该如何处理?

如果我必须适应“同步设置”屏幕,那么我会做到这一点(可以通过Settings.ACTION_SYNC_SETTINGS目的实现,但是很高兴能够将用户直接定向到所需的屏幕。

android authentication android-intent android-2.2-froyo
6个回答
15
投票

签出ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));

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);
}

2
投票

Android帐户管理器提供了用于添加帐户的API。 (Google或其他帐户类型)

公共AccountManagerFuture addAccount(字符串accountType,字符串authTokenType,字符串[] requiredFeatures,捆绑包addAccountOptions,Activity活动,AccountManagerCallback回调,处理程序处理程序)

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


2
投票

通过提供意向额外数据以提供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); }

1
投票

线索在您的shell命令中:

    Intent intent = new Intent();
    intent.setClassName( "com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity" );
    context.startActivity( intent );

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.