2010-08-26 6 views
10

J'ai testé le SDK Android ces derniers jours, prêt à écrire une application pour le magasin, mais j'ai rencontré un problème. .Lancement par programme de l'activité "Ajouter un compte" sur Android 2.2

L'application que j'écrirai nécessite que l'utilisateur dispose d'un compte Google associé au téléphone. La récupération et l'utilisation du jeton Auth ne posaient pas de problème, mais j'aimerais pouvoir montrer l'activité normale d'un utilisateur en passant par les menus Paramètres-> Comptes-> Ajouter un compte.

Maintenant, grâce à l'expérimentation, j'ai été capable de lancer cette activité depuis le shell en utilisant la commande suivante. J'ai des difficultés à effectuer la même action dans JAVA à l'aide de la classe Intent.

Est-ce que quelqu'un pourrait me dire d'abord si cela peut être fait via JAVA, et deuxièmement, comment pourrais-je faire? Si je dois me contenter de l'écran Sync Settings, je le ferai (cela peut être réalisé grâce à l'intention de Settings.ACTION_SYNC_SETTINGS), mais ce serait bien de pouvoir diriger l'utilisateur directement vers l'écran requis.

Répondre

15

Vérifiez la ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT)); 
+0

Mes remerciements - c'est un peu plus de ce que je suis en train de réaliser, cependant citer nos maîtres Jedi - «c'est pas l'activité que vous recherchez ». C'est l'étape suivante de la chaîne que j'essaie d'invoquer - une partie de l'Assistant d'installation - l'activité qui apparaît lorsque vous cliquez sur le symbole du compte 'Google'. Si cela est impossible, je m'en tiendrai à la réponse ACTION_ADD_ACCOUNT. Merci – Seidr

+0

Probablement c'est impossible parce que je ne vois pas sur la ressource liée. Et c'est la seule page qui décrit les paramètres globals. – Pentium10

+0

C'est ce que je craignais - j'imagine que l'accès au composant que j'appelle ci-dessus à partir de shell ADB (com.google.android.gsf/.login.AccountIntroActivity) est probablement restreint d'une certaine façon. – Seidr

3

Effectuez les actions suivantes:

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

Merci Markjan - Je vais vérifier cela une fois que j'ai à nouveau ma configuration SDK. – Seidr

+0

"my_auth_token" est-il un type de jeton d'authentification valide pour un compte Google? Si non, alors pouvez-vous me dire s'il vous plaît un type d'authentification valide pour l'ajout d'un compte Google? – sdream

1

L'indice est dans votre commande shell:

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

Account Manager Android fournit une API pour ajouter le compte . (Google ou d'autres types de compte)

publique AccountManagerFuture addAccount (String accountType, String authTokenType, String [] requiredFeatures, addAccountOptions Bundle, l'activité d'activité, rappel AccountManagerCallback, gestionnaire gestionnaire)

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

1

la réponse pour la question ci-dessus en fournissant EXTRA_ACCOUNT_TYPES dans les données supplémentaires d'intention. et définir la valeur à « com.google » afin d'alerter l'activité:

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