GCM - “无法实例化接收器”

时间:2013-11-18 01:37:37

标签: android broadcastreceiver google-cloud-messaging classnotfoundexception

错误:

java.lang.RuntimeException: Unable to instantiate receiver com.app_name.GcmBroadcastReceiver: java.lang.ClassNotFoundException: Didn't find class "com.app_name.GcmBroadcastReceiver" on path: DexPathList[[zip file "/data/app/com.app_name-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.app_name-2, /system/lib]]

类源代码

package com.app_name;

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);
    }
}

清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.app_name"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <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.app_name.permission.C2D_MESSAGE"
                android:protectionLevel="signature" />
    <uses-permission android:name="com.app_name.permission.C2D_MESSAGE" />

    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="Main"
                  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" />
                <category android:name="com.app_name" />
            </intent-filter>
        </receiver>
        <service android:name=".GcmIntentService" />
    </application>
</manifest>

我一直在寻找至少一个小时试图解决这个问题,而且我见过的所有解决方案都没有为我工作。大多数情况下,当出现一个简单的拼写错误时会发生此错误,但我已经反复检查了代码,并且无法弄清楚它有什么问题。如果它有所不同,我使用IntelliJ Idea(不是Android Studio)和通过USB连接的HTC One(T-Mobile US)来编译/运行应用程序。

当我将GCM消息发送到设备时会发生这种情况。所以我知道它正在收到它,但我无法弄清楚是什么原因造成的。

所有帮助将不胜感激!

固定 修复 - 问题在于我使用JDK6创建项目然后将其设置为JDK7。重新创建项目修复了它!

0 个答案:

没有答案