Android开发java.lang.RuntimeException

时间:2013-12-22 22:30:20

标签: java android broadcastreceiver boot

我正在开发我的应用程序的一部分,以便在设备启动时启动。我这样做是有充分理由的,运行检测移动的后台进程,我不打算向用户发送垃圾邮件或在打开设备时向他们显示界面。

我的问题面对是一个看起来像这样的错误,我不知道它是什么:

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!
}

所以,我安装我的应用程序,重新启动我的设备,并收到错误消息,说我的应用程序意外停止了。我查看正在运行的进程,应用程序不会出现在那里,也不会出现在缓存进程中。问题是什么?看起来错误是说两个文件无法通信。我想我犯了一个愚蠢的错误,如果有人可以请它指出来。

谢谢!

1 个答案:

答案 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    
    }
}