3

I am developing an android App.

I am implementing push notification with GCM.

However, I cannot receive push notification from my server. The error log says below.

java.lang.RuntimeException: Unable to instantiate service
com.google.android.gcm.GCMBroadCastReceiver: java.lang.ClassNotFoundException: 
Didn't find class "com.google.android.gcm.GCMBroadCastReceiver" on path: DexPathList

AndroidManifest.xml is below.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.myapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="net.myapp.permission.RECEIVE" />

    <permission
        android:name="net.myapp.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="net.myapp.permission.C2D_MESSAGE" />

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />

    <application
        android:name="net.myapp.sub.AppController"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id" />

        <activity
            android:name="net.myapp.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>
        <activity
            android:name="net.myapp.DetailActivity"
            android:uiOptions="splitActionBarWhenNarrow" >
            <meta-data
                android:name="android.support.UI_OPTIONS"
                android:value="splitActionBarWhenNarrow" />

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="twittercallback" />
            </intent-filter>
        </activity>

        <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="net.myapp" />
            </intent-filter>
        </receiver>

        <service android:name=".GcmIntentService" />

    </application>

</manifest>

GcmBroadcastReceiver.java is below.

package net.myapp;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.WakefulBroadcastReceiver;

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        ComponentName comp = new ComponentName(context.getPackageName(),
                 GcmIntentService.class.getName());

        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }

}

I confirm that I properly import android-support-v4.jar and google-play-services.jar. I tried some solutions from Google Search, however, I cannot solve yet.

Could you tell me how to solve the above problem?

supermonkey
  • 631
  • 11
  • 25
  • Have you add `gcm.jar` file to your `libs` folder?? – Piyush Dec 05 '14 at 11:09
  • Thank you for your reply. I have already imported google-play-services.jar , so I think it is not necessary to import gcm.jar. Is it wrong? – supermonkey Dec 05 '14 at 12:16
  • I think gcm.jar is in "Google Cloud Messaging for Android" in SDK Manager. However "Google Cloud Messaging for Android" is not in SDK Manager now. From Google Search, this library is deprecated. Is it wrong? – supermonkey Dec 05 '14 at 12:24
  • So, I don't need to add gcm.jar? – supermonkey Dec 05 '14 at 12:33
  • I have same issue once and i also added google play lib. jar file though error occurred so finally i added gcm.jar to libs folder and it worked. – Piyush Dec 05 '14 at 12:37

1 Answers1

1

In Manifest you wrote:

android:name="com.google.android.gcm.GCMBroadcastReceiver"

But your GcmBroadcastReceiver.java is in package net.myapp

Change android:name="com.google.android.gcm.GCMBroadcastReceiver" to android:name="net.myapp.GcmBroadcastReceiver"