Ich erhalte diesen Fehler von Android Studio Android Monitor. Dieser Fehler tritt auf, wenn ich eine Push-Benachrichtigung über GCM in einem echten Gerät sende und die App noch nicht gestartet wurde oder zum Stoppen gezwungen wurde. Gestern funktioniert alles gut, heute funktioniert es überhaupt nicht mehr (funktioniert nur, wenn die App im Hintergrund oder Vordergrund läuft).Fehler Broadcast Intent Callback: Ergebnis = CANCELLED forintent {act = com.google.android.c2dm.intent.RECEIVE pkg = com.flagg327.guicomaipu (hat Extras)}
Ich denke, das kann ein AndroidManifest
Fehler sein, aber ich bin es leid, auf der Suche nach dem Problem und kann nichts finden.
Manifest
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.flagg327.guicomaipu">
...
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
<!--GOOGLE CLOUD MESSAGE-->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- for Gingerbread GSF backward compat -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.flagg327.guicomaipu" />
</intent-filter>
</receiver>
<service
android:name="com.flagg327.guicomaipu.gcm.RegistrationService"
android:exported="false" />
<service
android:name="com.flagg327.guicomaipu.gcm.TokenRefreshListenerService"
android:exported="false">
<intent-filter>
<action
android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name="com.flagg327.guicomaipu.gcm.NotificacionsListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
</aplication>
<permission
android:name="com.flagg327.guicomaipu.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.flagg327.guicomaipu.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
TokenRefreshListenerService.java
jeden Tag Registrierung 'Token' Updates. Daher muss jede Android-App, die GCM verwendet, über einen InstanceIDListenerService verfügen, der diese Updates verwaltet.
public class TokenRefreshListenerService extends InstanceIDListenerService{
@Override
public void onTokenRefresh() {
// Launch the registration process.
Intent i = new Intent(this, RegistrationService.class);
startService(i);
}
}
NotificacionsListenerService.java
GCM automatisch die Push-Benachrichtigungen zeigt, aber nur dann, wenn die zugeordnete Anwendung hat ein GCMListenerService
public class NotificacionsListenerService extends GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle data) {
Log.d("A", "onMessageReceived()");
// Do something
}
}
RegistrationService.java
GCM identifiziert die Android-Geräte usin g Registrierungskarten ("Tokens"): Meine App sollte sich von jedem Android-Gerät aus registrieren können, auf dem sie installiert ist.
public class RegistrationService extends IntentService {
/**
* Constructor
*/
public RegistrationService() {
super("RegistrationService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Generate or download the registration 'token'.
InstanceID myID = InstanceID.getInstance(this);
String registrationToken = null;
try {
// Get the registration 'token'.
registrationToken = myID.getToken(
getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE,
null
);
// Subscribe to a topic. The app is able now to receive notifications from this topic.
GcmPubSub subscription = GcmPubSub.getInstance(this);
subscription.subscribe(registrationToken, "/topics/guico_maipu_topic", null);
} catch (IOException e) {
e.printStackTrace();
}
Log.e("Registration Token", registrationToken);
}
}
Fehler
Dieser Fehler erscheint, wenn ich eine Push-Benachrichtigung über Python senden.
09-13 21:21:44.800 1851-1851/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.flagg327.guicomaipu (has extras) }
Gestern funktionierte ... Irgendeine Idee? Als du für deine Zeit.
von diesem [Thema] Basierend (https://groups.google.com/forum/#!msg/android-gcm/MqVlA3Sj26c/6O4TdU1pm0UJ) tritt dieses Problem auf, wenn die empfangende Anwendung in gestoppt ist Zustand am Gerät (z. B. mit Force Stop aus den Einstellungen). Es fängt erst an Nachrichten wieder zu empfangen, wenn es manuell gestartet wird. Sie können diese [verwandte SO Post] (http://stackoverflow.com/questions/11902947/broadcast-intent-callback-result-cancelled-forintent) auch überprüfen. – abielita
Sloved dies überprüfen ..https: //stackoverflow.com/a/45810771/1993001 –