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

时间:2010-08-26 13:05:52

标签: android login android-intent android-2.2-froyo

过去几天我一直在尝试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意图实现),但是能够将用户直接引导到所需的屏幕是非常好的。< / p>

6 个答案:

答案 0 :(得分:15)

查看ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));

答案 1 :(得分: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 :(得分:2)

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

public AccountManagerFuture addAccount(String accountType,String authTokenType,String [] requiredFeatures,Bundle addAccountOptions,Activity activity,AccountManagerCallback callback,Handler handler)

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

答案 3 :(得分: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); }

答案 4 :(得分:1)

线索在你的shell命令中:

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

答案 5 :(得分:0)

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

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

(尽管您仍然需要选择所需的帐户类型)