Trovate attività per gestire Intent {agire = android.accounts.AccountAuthenticator} anche se ne ho uno
-
01-10-2019 - |
Domanda
Sto cercando di avere la mia applicazione visualizzare la mia attività di accesso quando un utente seleziona "Aggiungi account" "Account e sincronizzazione" o vuole utilizzare l'applicazione e non viene registrato in ancora. Ho seguito l'esempio SampleSyncAdapter abbastanza da vicino, ma non ci riesco farlo funzionare e ricevere la seguente eccezione invece:
No Activity found to handle Intent { act=android.accounts.AccountAuthenticator }
Il mio servizio auth contiene:
public IBinder onBind(Intent intent) {
IBinder ret = null;
if (intent.getAction().equals(android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT)){
ret = getAuthenticator().getIBinder();
}
return ret;
}
Il mio AndroidManifest.xml
:
<service android:name=".auth.MyAuthService"
android:exported="true"
android:process=":auth">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator"
/>
La mia attività principale:
startActivity(new Intent(android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT));
Ho provato a fare entrambe le cose:
Intent svc = new Intent(this, CreazaAuthService.class);
startService(svc);
e
bindService(new Intent(android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT), null, BIND_AUTO_CREATE);
prima della chiamata startActivity()
, ma ancora non riesce a trovare un'attività per tale intento. Se cerco di aggiungere un account tramite gli account e sincronizzazione miei crash dell'applicazione con lo stesso ActivityNotFoundException
.
Che cosa sto facendo di sbagliato?
Modifica
Ho esaminato app last.fm di C99, che definisce un'azione personalizzata e usa intenti sulla base di tale azione piuttosto che android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT
. È che un approccio migliore? C'è un modo per farlo funzionare con Account e sincronizzazione?
Soluzione
Nel vostro intento filtro put <category android:name="android.intent.category.DEFAULT" />