我正在开发我的应用程序的一部分,以便在设备启动时启动。我这样做是有充分理由的,运行检测移动的后台进程,我不打算向用户发送垃圾邮件或在打开设备时向他们显示界面。
我的问题面对是一个看起来像这样的错误,我不知道它是什么:
12-22 17:00:53.399: E/AndroidRuntime(1629): Process: com.dd.splash, PID: 1629
12-22 17:00:53.399: E/AndroidRuntime(1629): java.lang.RuntimeException: Unable to instantiate receiver com.dd.splash.MyActivity: java.lang.ClassCastException: com.dd.splash.MyActivity cannot be cast to android.content.BroadcastReceiver
12-22 17:00:53.399: E/AndroidRuntime(1629): Caused by: java.lang.ClassCastException: com.dd.splash.MyActivity cannot be cast to android.content.BroadcastReceiver
以下是错误的代码段
的AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:enabled="true"
android:name=".MyActivity"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
MyActivity.java
public class MyActivity {
//The code that I want in the process will go here soon!
}
所以,我安装我的应用程序,重新启动我的设备,并收到错误消息,说我的应用程序意外停止了。我查看正在运行的进程,应用程序不会出现在那里,也不会出现在缓存进程中。问题是什么?看起来错误是说两个文件无法通信。我想我犯了一个愚蠢的错误,如果有人可以请它指出来。
谢谢!
答案 0 :(得分:1)
错误告诉你一切:
java.lang.ClassCastException: com.dd.splash.MyActivity无法强制转换为android.content.BroadcastReceiver
如您所示,您的MyActivity代码为:
public class MyActivity {
}
所以asumming你希望它成为一个接收器,你需要扩展BroadcastReceiver,并覆盖它的'onReceive()方法,如下所示:
public class MyActivity extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//code to run when receiver fires
}
}