2010-08-26 15 views
10

Negli ultimi giorni ho sperimentato con l'SDK di Android, pronto a scrivere un'app per il negozio, tuttavia ho riscontrato un po 'di problemi .Avvio in modo programmatico dell'attività "Aggiungi account" in Android 2.2

L'app che scriverò richiede che l'utente abbia un account Google associato al telefono. Recedere e utilizzare il token di autenticazione ecc. Non era un problema, tuttavia mi piacerebbe essere in grado di mostrare l'attività che un utente potrebbe raggiungere utilizzando i menu Impostazioni-> Account-> Aggiungi account.

Ora attraverso la sperimentazione sono stato in grado di avviare questa attività dalla shell utilizzando il seguente comando.

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

Ho problemi a eseguire la stessa azione in JAVA utilizzando la classe Intent.

Qualcuno potrebbe dirmi in primo luogo se questo può essere fatto o meno tramite JAVA, e in secondo luogo come potrei farlo per favore?

Se devo accontentarmi della schermata Impostazioni di sincronizzazione, lo farò (ciò può essere ottenuto tramite l'intento Settings.ACTION_SYNC_SETTINGS), tuttavia sarebbe molto bello poter indirizzare l'utente direttamente alla schermata richiesta.

risposta

15

Scopri i ACTION_ADD_ACCOUNT

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

I miei ringraziamenti - che è un passo più vicino a quello che sto cercando di realizzare, invece di citare i nostri maestri Jedi - 'questo è non l'attività che stai cercando '. È il prossimo passo della catena che sto tentando di richiamare, parte dell'Impostazione guidata, l'attività che appare quando si fa clic sul simbolo dell'account "Google". Se ciò è impossibile, rimarrò con la risposta ACTION_ADD_ACCOUNT. Grazie – Seidr

+0

Probabilmente è impossibile perché non vedo sulla risorsa collegata. E questa è l'unica pagina che descrive le impostazioni globali. – Pentium10

+0

Questo è quello che temevo - immagino che l'accesso al componente che sto chiamando sopra da adb shell (com.google.android.gsf/.login.AccountIntroActivity) sia probabilmente limitato a come. – Seidr

3

Prova il seguente:

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

Grazie markjan - Lo controllerò una volta che avrò di nuovo installato il mio SDK. – Seidr

+0

"my_auth_token" è un tipo di token di autorizzazione valido per l'account Google? Se no, allora puoi dirmi un tipo di token di autorizzazione valido per l'aggiunta dell'account Google? – sdream

1

L'indizio è nel comando di shell:

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

Android Account Manager fornisce un'API per aggiungere conto . (Google o altri tipi di account)

pubblico AccountManagerFuture addAccount (String accountType, String authTokenType, String [] requiredFeatures, addAccountOptions Bundle, attività Attività, AccountManagerCallback richiamata, gestore Handler)

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

1

la risposta per la domanda precedente fornendo EXTRA_ACCOUNT_TYPES nei dati extra di intent. e impostare il valore a "com.google" per allertare l'attività:

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