Ho un servizio in background che chiama GoogleAuthUtl.getTokenWithNotification
e funziona correttamente ma sto cercando di implementare la parte di richiamata di questa funzione e che non funziona correttamente.android GoogleAuthUtil.getTokenWithNotification La richiamata di Intent non si attiva
Ho implementato un ricevitore broadcast e l'ho aggiunto al manifest, ho anche un'attività nella mia app. Di seguito sono riportati i pezzi di codice rilevanti.
GoogleAuthUtil.getTokenWithNotification
GoogleAuthUtil.getTokenWithNotification(this.getContext(), account, "oauth2:" + GmailScopes.GMAIL_SEND, null, new Intent(AuthReceiver.AUTH_INTENT));
AuthReceiver
public class AuthReceiver extends BroadcastReceiver
{
public final static String AUTH_INTENT = "com.testoauth.AUTH_INTENT";
public AuthReceiver()
{
}
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("RECEIVER", "Received Auth broadcast.");
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
}
}
AndroidManifest
<receiver android:name=".AuthReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="com.testoauth.AUTH_INTENT" />
</intent-filter>
</receiver>
Non ho idea del motivo per cui non sta ricevendo la trasmissione. Non vedo alcuna eccezione nei log e nessuna indicazione che il ricevitore è stato chiamato, non si romperà nemmeno su un breakpoint durante il debug. Sto facendo qualcosa in modo errato?
EDIT
sto usando min sdk 16 e sdk obiettivo del 25
Dalla documentazione GoogleAuthUtil.getTokenWithNotification API:
Questo metodo è espressamente previsto per le operazioni in background. Nell'evento di un errore che richiede l'intervento dell'utente, questo metodo si presta a per inviare una notifica pertinente. Dopo che l'utente ha risposto alla notifica , la chiamata viene trasmessa. Se l'utente annulla quindi , la richiamata non viene attivata.
La richiamata non viene attivata indipendentemente dall'annullamento dell'utente. A parte lo ActivityManager
che dice che la notifica è stata visualizzata (Displayed com.google.android.gms/.auth.uiflows.gettoken.GetTokenActivity
), non vi è alcuna indicazione che l'intento di trasmissione specificato (in questo caso com.testoauth.AUTH_INTENT
) sia stato inviato nei registri. La "Trasmissione di ricezione ricevuta". il messaggio è anche assente dai log.
L'esempio di SDK incluso di questa funzionalità (<android-sdk>/extras/google/google_play_services/samples/auth/gau
) non funziona nemmeno.
Hai trovato una soluzione a questo problema? Ho provato lo stesso, ma non funziona anche per me. – Emanuel
@Emanuel Purtroppo no, non l'ho fatto. – vane
Stavo solo controllando, 'AuthReceiver.AUTH_INTENT = "com.testoauth.AUTH_INTENT";', giusto? *** /// *** Probabilmente non correlato: non utilizzare intenti impliciti, ci sono limitazioni in arrivo con ogni nuova versione della piattaforma [(Android O adesso)] (https://developer.android.com/preview/features /background.html#broadcasts) e il tuo caso non ha bisogno di Intenti impliciti. Basta creare 'new Intent (context, com.package.AuthReceiver.class)'. –