当前位置: 首页 > 知识库问答 >
问题:

无法实例化接收器GCMBroadcastReceiver

廖夜洛
2023-03-14

我在跟随一位导游http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/对于GCM。

目前,我被困在接收通知的部分。有时,当我运行代码时,它会因以下错误而崩溃:

7.517:E/AndroidRuntime(8601):致命异常:main 7.517:E/AndroidRuntime(8601):java。lang.RuntimeException:无法实例化接收器com.google.Androidgcm。GCMBroadcastReceiver:java。lang.ClassNotFoundException:在路径:DexPathList[[zip文件”//data/app/com.example.someactivity-1.apk“],NativelLibraryDirectory=[/data/app-lib/com.example.someactivity-1,/vendor/lib,/system/lib]]7.517:E/AndroidRuntime(8601):在android上未找到类“com.google.androad.gcm.gcm.gcm.gcmbroadcastereceiver”。应用程序。活动线程。HandlerReceiver(ActivityThread.java:2544)7.517:E/AndroidRuntime(8601):在android上。应用程序。活动线程。在android上访问$1500(ActivityThread.java:153)7.517:E/AndroidRuntime(8601)。应用程序。ActivityThread$H.handleMessage(ActivityThread.java:1345)7.517:E/AndroidRuntime(8601):在android上。操作系统。处理程序。dispatchMessage(Handler.java:99)7.517:E/AndroidRuntime(8601):在android上。操作系统。活套。loop(Looper.java:137)7.517:E/AndroidRuntime(8601):在android上。应用程序。活动线程。main(ActivityThread.java:5295)7.517:E/AndroidRuntime(8601):位于java。朗。反思。方法Invokenactive(本机方法)7.517:E/AndroidRuntime(8601):在java。朗。反思。方法invoke(Method.java:525)7.517:E/AndroidRuntime(8601):位于com.Android内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:739)7.517:E/AndroidRuntime(8601):在com上。Android内部的操作系统。合子体。main(ZygoteInit.java:555)7.517:E/AndroidRuntime(8601):在dalvik。系统原生艺术。main(本机方法)7.517:E/AndroidRuntime(8601):由:java引起。lang.ClassNotFoundException:在路径:DexPathList[[zip文件”//data/app/com.example.someactivity-1.apk“],NativeLibraryDirectory=[/data/app lib/com.example.someactivity-1,/vendor/lib,/system/lib]]7.517:E/AndroidRuntime(8601):在dalvik上未找到类“com.google.androad.gcm.gcm.gcm.GCMBroadcastReceiver”。系统BaseDexClassLoader。findClass(BaseDexClassLoader.java:53)7.517:E/AndroidRuntime(8601):位于java。lang.ClassLoader。loadClass(ClassLoader.java:501)7.517:E/AndroidRuntime(8601):在java。lang.ClassLoader。loadClass(ClassLoader.java:461)7.517:E/AndroidRuntime(8601):在android上。应用程序。活动线程。HandlerReceiver(ActivityThread.java:2539)

这是我的舱单:

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

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

    <!-- GCM connects to Internet Services. -->
    <uses-permission android:name="android.permission.INTERNET" />

    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <!-- Creates a custom permission so only this app can receive its messages. -->
    <permission
        android:name="com.example.someactivity.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.someactivity.permission.C2D_MESSAGE" />

    <!-- This app has permission to register and receive data message. -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <!-- Network State Permissions to detect Internet status -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- Permission to vibrate -->
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock.Light" >
        <activity
            android:name="com.example.someactivity.Login"
            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="com.example.someactivity.fragmentContainer" >
        </activity>

        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>

                <!-- Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <!-- Receives the registration id. -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="com.example.someactivity" />
            </intent-filter>
        </receiver>

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

    </application>

</manifest>     

以及我使用的接收器:

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString("Some Message");
        // Waking up mobile if it is sleeping
        WakeLocker.acquire(getApplicationContext());

        /**
         * Take appropriate action on this message
         * depending upon your app requirement
         * For now i am just displaying it on the screen
         * */

        // Showing received message       
        Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show();

        // Releasing wake lock
        WakeLocker.release();
    }
};

为什么我得到接收器没有实例化,我已经改变了包的名称。

共有2个答案

谷梁永年
2023-03-14

确保收件人包裹名称在清单中正确

司空俊悟
2023-03-14

添加gcm。jar到您的libs文件夹。

 类似资料:
  • 我已经将Android应用程序上传到playstore。在第一次下载时,它会崩溃,但在那之后,它工作正常。它将错误显示为无法实例化接收器com。谷歌。Android应用程序。分析。由java引起的AnalyticsReceiver。lang.ClassNotFoundException:未找到类“com.google.android.apps.analytics.analytics.Analyti

  • 我正在做一个应用程序,我想注册一个新的广播接收器。但是,当意图被触发时,应用程序无法找到接收器类,并以以下错误失败: System.err:无法实例化接收器org.nativescript.ntngcallerid.phoneCallReceiver:java.lang.ClassNotFoundException:在路径:dexpathList[[zip文件“/data/app/org.nati

  • 根据谷歌手册,我尝试使用GCM服务创建测试应用程序https://developer.android.com/google/gcm/client.html#app 但当我收到消息-我有这个错误: 无法实例化接收器com。实例testpushnotification。GcmBroadcastReceiver:java。lang.ClassNotFoundException:在以下路径中未找到类“co

  • 我试图使用Postgis 2.2和Postgreql 9.5与JPA,Postgis 9.5方言。我已经在pom.xml的要求,按这里http://www.hibernatespatial.org/documentation/documentation/和类型导入正确,但是当我试图运行程序使用几何类型我得到这个错误: 我显然遗漏了一些配置,有人能指出是什么吗?

  • 我在MapFragment的布局文件中出现了这个错误 我试过了 > 安装Google Play服务,但仍有错误 - com.google.android.gms.maps.MapFragment(开放类,显示异常,清除缓存) 提示:在自定义视图中使用view.isinEditMode()跳过代码或在IDE中显示示例数据。 如果这是一个意外错误,您也可以尝试构建项目,然后手动刷新布局。 异常详细信息

  • 我正在将一个Java EE应用程序部署到Bluemix,当第一个请求到达时,我得到了这个错误: 2015-05-20T23:11:58.51+0200[app/0]OUT[INFO]FFDC1015I:已创建FFDC事件:“java.util.ServiceConfigurationError:javax.servlet.ServletContainerInitializer:Provider o