Leaked IntentReceiver Fehler beim Aufruf von GCMRegistrar.register()
Ich versuche zu beenden, die erste Schritte Schritte auf Google GCM von Googles Android-Entwickler-Website.
Wenn mein Gerät versucht, sich anzumelden, schlägt es fehl, mit dem folgenden Grund:
Aktivität ausgetreten IntentReceiver von com.google.android.gcm.GCMBroadcastReceiver, die ursprünglich hier angemeldet. Vermissen Sie einen Anruf zu unregisterReceiver?
Dies ist der code:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, senderId); //<-- It fails here
} else {
Log.v("GCM", "Already registered");
}
Irgendeine Idee?
Was mache ich falsch?
Update
Dies ist mein manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<permission android:name="com.sample.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.sample.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".sample"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:theme="@android:style/Theme.NoTitleBar" android:name=".Main" android:screenOrientation="portrait" />
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.sample" />
</intent-filter>
</receiver>
<service android:name="com.sample.GCMIntentService" />
<uses-library android:name="com.google.android.maps" />
</application>
</manifest>
- Nur eine Vermutung, hast du die Klasse GCMIntentService in Ihrem Projekt, und hat diese Klasse den Namen des Pakets com.Probe.GCMIntentService?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließlich es funktioniert.
Alles, was ich zu tun ist, rufen Sie zu
GCMRegistrar.onDestroy(this)
imonDestroy()
Methode in diesem Zusammenhang nenne ichGCMRegistrar.register()
Finden Sie hier: Leaked IntentReceiver in der Google-Cloud-Messaging
Danke für Eure Unterstützung 🙂
Sollten Sie den application-context, statt die Aktivität Kontext wie folgt:
Dies ist mein problem gelöst.:)
Passiert mir, wenn ich nicht meine Berechtigungen richtig.
Ich löste es, indem Sie in das manifest:
Ich habe es die Arbeit mit diesem manifest:
Fügen Sie auch einen leeren Konstruktor für die Klasse, die sich von GCMBaseIntentService. In meinem Fall heißt: GCMIntentService.