2010-08-26 4 views
10

Ich habe in den letzten Tagen mit dem Android SDK experimentiert, in Bereitschaft, eine App für den Laden zu schreiben, aber ich habe ein bisschen ein Problem durchlaufen .Programmatisch starten die Aktivität "Konto hinzufügen" in Android 2.2

Die App, die ich schreibe erfordert, dass der Benutzer ein Google-Konto mit dem Telefon verknüpft hat. Es war kein Problem, das Auth-Token usw. zu nutzen und zu nutzen, aber ich würde gerne in der Lage sein, die Aktivität zu zeigen, die ein Benutzer normalerweise erreichen würde, indem er die Menüs Einstellungen-> Konten-> Konto hinzufügen durchläuft.

Jetzt durch Experimente konnte ich diese Aktivität von der Shell mit dem folgenden Befehl starten.

Ich habe Probleme beim Ausführen der gleichen Aktion in JAVA mit der Intent-Klasse.

Würde jemand mir sagen können, erstens, ob dies über JAVA gemacht werden kann, und zweitens, wie ich das bitte machen könnte?

Wenn ich mich mit dem Sync-Einstellungen-Bildschirm begnügen muss, dann werde ich (dies kann durch die Intents Settings.ACTION_SYNC_SETTINGS erreicht werden), aber es wäre ziemlich nett, in der Lage zu sein, den Benutzer direkt auf den erforderlichen Bildschirm zu verweisen.

Antwort

15

Schauen Sie sich die ACTION_ADD_ACCOUNT

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

Mein Dank - das ist ein Schritt näher an, was ich versuche, jedoch zu erreichen, unsere Jedi Meister zu zitieren - ‚das ist nicht die Aktivität, nach der du suchst '. Es ist der nächste Schritt in der Kette, die ich versuche aufzurufen - Teil des Setup-Assistenten - die Aktivität, die angezeigt wird, wenn Sie auf das Google-Kontosymbol klicken. Wenn das nicht möglich ist, bleibe ich bei der Antwort ACTION_ADD_ACCOUNT. Danke – Seidr

+0

Wahrscheinlich ist es unmöglich, weil ich nicht auf der verbundenen Ressource sehe. Und das ist die einzige Seite, die die globalen Einstellungen der Einstellungen beschreibt. – Pentium10

+0

Das ist, was ich befürchtet habe - ich stelle mir vor, dass der Zugriff auf die Komponente, die ich oben von adb-Shell (com.google.android.gsf/.login.AccountIntroActivity) anruft, wahrscheinlich etwas eingeschränkt ist. – Seidr

3

Versuchen Sie Folgendes:

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

Danke Markjan - Ich werde das überprüfen, sobald ich mein SDK-Setup wieder habe. – Seidr

+0

"my_auth_token" ist es ein gültiger Authentifizierungs-Tokentyp für Google-Konto? Wenn nein, können Sie mir dann einen gültigen Tokentyp für das Hinzufügen eines Google-Kontos geben? – sdream

1

Der Schlüssel ist in der Shell-Befehl:

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

die Antwort für die obige Frage, indem Sie EXTRA_ACCOUNT_TYPES in den zusätzlichen Daten bereitstellen. und setzen Sie den Wert auf „com.google“, um die Aktivität zu alarmieren:

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