2014-05-17 52 views
1

以下是我通過GCM向我的設備發送通知時所得到的結果。我到處搜索,我仍然無法弄清楚我做錯了什麼。GCM無法實例化接收器/ ClassNotFoundException

05-17 13:02:41.817: E/AndroidRuntime(2488): FATAL EXCEPTION: main 
05-17 13:02:41.817: E/AndroidRuntime(2488): java.lang.RuntimeException: Unable to instantiate receiver com.amo.android.gcm.NotificationsReceiver: java.lang.ClassNotFoundException: Didn't find class "com.amo.android.gcm.NotificationsReceiver" on path: /data/app/com.amo.android-1.apk 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2357) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.app.ActivityThread.access$1500(ActivityThread.java:141) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.os.Looper.loop(Looper.java:137) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at dalvik.system.NativeStart.main(Native Method) 
05-17 13:02:41.817: E/AndroidRuntime(2488): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.amo.android.gcm.NotificationsReceiver" on path: /data/app/com.amo.android-1.apk 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2352) 
05-17 13:02:41.817: E/AndroidRuntime(2488):  ... 10 more 

這裏是我的AndroidManifest.xml

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

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <!-- GCM --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

    <permission android:name="com.amo.android.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="com.amo.android.permission.C2D_MESSAGE" /> 

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

    <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.amo.android.SplashActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name="com.amo.android.gcm.NotificationsReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <category android:name="com.amo.android" /> 
      </intent-filter> 
     </receiver> 
     <service android:name="com.amo.android.gcm.GcmMessageHandler" /> 

     <activity android:name="com.amo.android.MainActivity"  android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.SuggestActivity" android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.EventActivity"  android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.CommentsActivity" android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.SettingsActivity" android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.FeedbackActivity" android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.EventsListActivity" android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.LikersActivity"  android:screenOrientation="portrait" /> 
     <activity android:name="com.amo.android.gcm.NotificationsDebugActivity"  android:screenOrientation="portrait" /> 

     <!-- Facebook --> 
     <meta-data android:value="@string/facebook_app_id" android:name="com.facebook.sdk.ApplicationId"/> 

     <activity android:name="com.facebook.LoginActivity" /> 

    </application> 

</manifest> 

,這裏是我的接收器:

package com.amo.android.gcm; 

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

public class NotificationsReceiver extends WakefulBroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.i("GcmBroadcastReceiver", "receive message !"); 

     ComponentName comp = new ComponentName(context.getPackageName(), GcmMessageHandler.class.getName()); 
     startWakefulService(context, (intent.setComponent(comp))); 
     setResultCode(Activity.RESULT_OK); 
    } 
} 

請幫助。

+0

確保(假設您使用的是eclipse)在您的'Java Build Path' - >'Order and Export'中檢查'Android Private Libraries'。 – Eran

回答

1

我從零開始重新創建項目找到解決方案。我仍然不知道什麼是錯的。

問題解決!

相關問題