我目前正在开发一款Android应用,它必须在插入USB时启动视频,并在USB拔下时关闭视频。目前的问题是:它只能运行两次,之后应用程序无法启动(在log cat:bad process ...中)。我在android(和java)中完全是一个初学者。 这就是我的项目的工作方式: MainActivity启动在循环中打开的视频。 我已经设置了一个接收器,当插入USB时启动MainActivity。 我有另一个接收器,当USB拔下时会触发
这是杀死我的MainActivity的活动:
public class OffPowerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Intent i = new Intent(context, MainActivity.class);
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity) context).finish();
}
}
我确定我做得不好,也许这不是正确的事情。
这是我的主要活动结束:
@Override
protected void onDestroy() {
super.onDestroy();
}
感谢您的帮助!
日志:
10-12 17:26:01.159: E/AndroidRuntime(21814): FATAL EXCEPTION: main
10-12 17:26:01.159: E/AndroidRuntime(21814): Process: com.example.video1, PID: 21814
10-12 17:26:01.159: E/AndroidRuntime(21814): java.lang.RuntimeException: Unable to start receiver com.example.video1.OffPowerReceiver: java.lang.ClassCastException: android.app.ReceiverRestrictedContext cannot be cast to android.app.Activity
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2414)
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.app.ActivityThread.access$1700(ActivityThread.java:135)
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.os.Handler.dispatchMessage(Handler.java:102)
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.os.Looper.loop(Looper.java:136)
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.app.ActivityThread.main(ActivityThread.java:5001)
10-12 17:26:01.159: E/AndroidRuntime(21814): at java.lang.reflect.Method.invokeNative(Native Method)
10-12 17:26:01.159: E/AndroidRuntime(21814): at java.lang.reflect.Method.invoke(Method.java:515)
10-12 17:26:01.159: E/AndroidRuntime(21814): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
10-12 17:26:01.159: E/AndroidRuntime(21814): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-12 17:26:01.159: E/AndroidRuntime(21814): at dalvik.system.NativeStart.main(Native Method)
10-12 17:26:01.159: E/AndroidRuntime(21814): Caused by: java.lang.ClassCastException: android.app.ReceiverRestrictedContext cannot be cast to android.app.Activity
10-12 17:26:01.159: E/AndroidRuntime(21814): at com.example.video1.OffPowerReceiver.onReceive(OffPowerReceiver.java:15)
10-12 17:26:01.159: E/AndroidRuntime(21814): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2407)
10-12 17:26:01.159: E/AndroidRuntime(21814): ... 10 more
10-12 17:26:05.223: W/BroadcastQueue(575): Unable to launch app com.example.video1/10091 for broadcast Intent { act=android.intent.action.ACTION_POWER_CONNECTED flg=0x4000010 }: process is bad
答案 0 :(得分:0)
您可以通过两种方式关闭应用程序。
以编程方式触发usb拔出呼叫的广播接收器,而不是添加清单文件。这样你就可以完成活动的实例。
onRecieve广播消息,杀死应用程序的过程(可选,在最坏的情况下,你可以使用它)
android.os.Process.killProcess(android.os.Process.myPid());