I tried to create a test application with the GCM service, in accordance with the Google manual https://developer.android.com/google/gcm/client.html#app
But when I get the message - I have this error:
Unable to instantiate receiver com.example.testpushnotification.GcmBroadcastReceiver: java.lang.ClassNotFoundException: could not find class "com.example.testpushnotification.GcmBroadcastReceiver" on path: DexPathList [[zip file "/data/app/com.example.testpush 2.apk "], nativeLibraryDirectories = [/ data / application pb /com.example.testpushnotification-2, / vendor / lib, / system / lib]]
I was looking for all the same questions, but they have no solutions or solutions that did not help or they are out of date.
My manifest:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testpushnotification" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <permission android:name="com.example.testpushnotification.permission.C2D_MESSAGE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.testpushnotification.permission.C2D_MESSAGE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> <activity android:name="com.example.testpushnotification.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".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.example.testpushnotification"/> </intent-filter> </receiver> <service android:name=".GcmIntentService"/> </application>
And the source code for the GcmBroadcastReceiver in the com.example.testpushnotification package:
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {
And why does the Dex path contain a different package than mine?
Please, how to fix it?
FIXED Modified <receiver android:name=".GcmBroadcastReceiver" .. </receiver>
before <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" .. </receiver> (case sensitivity)
android google-cloud-messaging
Egor Lisakov
source share