我是BroadcastReceiver
以及Service
和GoogleCloudMessaging
的新手。我正在http://developer.android.com/google/gcm/gs.html
将库导入我的工作区并将其引用到我的项目后,我收到运行时异常“没有找到类错误”。我浏览了互联网,发现错误可能与我的AndroidManifest.xml
有关,因为我不知道本教程中描述的清单的一些事情,所以它可能有意义。
例如:
<receiver
android:name=".MyBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.my.package" />
</intent-filter>
</receiver>
<service android:name=".MyIntentService" />
首先,在本教程中,他们声明了一个名为“MyBroadcastReceiver”的receiver
但后来他们定义了一个名为“GcmBroadcastReceiver”的类,它扩展了BroadcastReceiver
。所以我不知道它们是两个不同的东西,或者它是一个错误,它们应该被命名为相同。
第二件事是Service
。教程中没有服务。所以我想我想创建一个服务
第三件事是,我不明白从BroadcastReceiver
调用Service
和/或MainActivity
的方式或位置,它们是如何联系在一起的等等。
编辑:我正在使用新的Google Cloud Messaging API
答案 0 :(得分:1)
不再需要该服务。它与较旧的API一起使用。广播接收器调用它来处理到达的消息和注册结果,但现在所有到达消息的处理都是在广播接收器中完成的。
您需要一个广播接收器类。你怎么称呼它并不重要。 GcmBroadcastReceiver
是他们为演示应用创建的课程。名称MyBroadcastReceiver
表明您应该在课堂上创建。不从主要活动调用广播接收器。将GCM消息发送到您的应用时会调用它。
至于你的No class def found error
,假设你正在使用Eclipse,你可能错过了检查Java Build Path - &gt;订单和出口 - &gt; Android项目中的Android私有库标记。