Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android开发java.lang.RuntimeException_Java_Android_Broadcastreceiver_Boot - Fatal编程技术网

Android开发java.lang.RuntimeException

Android开发java.lang.RuntimeException,java,android,broadcastreceiver,boot,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.Run

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

我面临的问题是一个类似这样的错误,我不知道它是什么:

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>

因此,我安装我的应用程序,重新启动我的设备,并得到一个错误,说我的应用程序已意外停止。我查看正在运行的进程,应用程序既不显示在那里,也不显示在缓存的进程中。有什么问题?看起来错误是这两个文件无法通信。如果有人能指出的话,我想我犯了一个愚蠢的错误。

谢谢

错误告诉您一切:

java.lang.ClassCastException:com.dd.splash.MyActivity无法强制转换为android.content.BroadcastReceiver

如图所示,MyActivity的代码为:

public class MyActivity {

}
因此,如果希望它成为接收器,则需要扩展BroadcastReceiver,并重写其“onReceive()方法,如下所示:

public class MyActivity extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //code to run when receiver fires    
    }
}

看起来好多了,但我遇到了以下错误:
此行有多个标记-BroadcastReceiver无法解析为类型-类型MyActivity必须实现继承的抽象方法BroadcastReceiver.onReceive(Context,Intent)
同样,错误告诉您需要做什么:在MyActivity中重写onReceive(),如我的回答所示:)哦,等等,我明白了!我需要正确的
导入
行!谢谢你的帮助!但还有一件事,我的应用程序不会显示在nexus上运行的进程下,有什么想法吗?也许这是因为它实际上还没有做任何事情?或者我必须包括
Intent i=newintent(context,MyActivity.class);i、 addFlags(意图、标志、活动、新任务);背景。起始触觉(i)某处?Oh发现错误
无法启动receiver com.dd.splash.MyActivity:android.content.ActivityNotFoundException:无法找到显式活动类{com.dd.splash/com.dd.splash.MyActivity};您是否在AndroidManifest.xml中声明了此活动?
因此我必须在AndroidManifest.xml中声明此活动。。。我该怎么做?
public class MyActivity extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //code to run when receiver fires    
    }
}