Mam usługę w tle, która wywołuje GoogleAuthUtl.getTokenWithNotification
i działa poprawnie, ale próbuję zaimplementować część wywołania zwrotnego tej funkcji i że nie działa poprawnie.Android GoogleAuthUtil.getTokenWithNotification Intent wywołanie zwrotne nie wyzwala
Zaimplementowałem odbiornik transmisji i dodałem go do manifestu, mam również aktywność w mojej aplikacji. Poniżej znajdują się odpowiednie fragmenty kodu.
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>
Nie mam pojęcia, dlaczego nie odbiera transmisji. Nie widzę żadnych wyjątków w dziennikach i nic nie wskazuje na to, że odbiornik został w ogóle wywołany, nawet nie złamie punktu przerwania podczas debugowania. Czy robię coś niepoprawnie?
EDIT
Używam min SDK 16 i docelowy SDK 25
Z dokumentacji GoogleAuthUtil.getTokenWithNotification API:
Metoda ta jest specjalnie przewidziany zadań w tle. W zdarzeniu o błędzie wymagającym interwencji użytkownika ta metoda zajmuje się wysyłania odpowiedniego powiadomienia. Po zgłoszeniu przez użytkownika powiadomienia wywołanie zwrotne jest nadawane. Jeśli użytkownik anuluje to , wywołanie zwrotne nie zostanie uruchomione.
Oddzwonienie nie jest wywoływane, niezależnie od tego, czy użytkownik anulował czy nie. Pomijając ActivityManager
, mówiąc, że powiadomienie zostało wyświetlone (Displayed com.google.android.gms/.auth.uiflows.gettoken.GetTokenActivity
), nic nie wskazuje na to, że określone intencje transmisji (w tym przypadku com.testoauth.AUTH_INTENT
) zostały przesłane w dziennikach. Transmisja "Odebrane uwierzytelnianie". komunikat jest również nieobecny w dziennikach.
Załączony przykład SDK tej funkcji (<android-sdk>/extras/google/google_play_services/samples/auth/gau
) nawet nie działa.
Czy znalazłeś rozwiązanie tego problemu? Próbowałem tego samego, ale to też nie działa dla mnie. – Emanuel
@Emanuel Niestety nie, nie mam. – vane
Wystarczy sprawdzić, 'AuthReceiver.AUTH_INTENT =" com.testoauth.AUTH_INTENT ";', prawda? *** /// *** Prawdopodobnie nie są powiązane: nie używaj ukrytych zamiarów, są ograniczenia związane z każdą nową wersją platformy [(Android O teraz)] (https://developer.android.com/preview/features /background.html#broadcasts), a twoja sprawa wcale nie wymaga ukrytego zamiaru. Po prostu stwórz 'new Intent (context, com.package.AuthReceiver.class)'. –