Trovate attività per gestire Intent {agire = android.accounts.AccountAuthenticator} anche se ne ho uno

StackOverflow https://stackoverflow.com/questions/3133887

  •  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?

È stato utile?

Soluzione

Nel vostro intento filtro put <category android:name="android.intent.category.DEFAULT" />

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top