解决Content的startActivity方法报错
16lz
2021-01-24
Android 2.3.3 Eclipse Version: 3.7.0 LogCat
BootBroadcastReceiver继承自android.content.BroadcastReceiver,处理广播事件,部分代码如下:
public void onReceive(Context context, Intent intent) {……Intent startIPhone = new Intent(context, Iphone.class);context.startActivity(startIPhone);……}
LogCat 报错信息:
02-10 13:26:11.017: DEBUG/AndroidRuntime(17173): Shutting down VM02-10 13:26:11.017: WARN/dalvikvm(17173): threadid=1: thread exiting with uncaught exception (group=0x40015560)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): FATAL EXCEPTION: main02-10 13:26:11.048: ERROR/AndroidRuntime(17173): java.lang.RuntimeException: Unable to start receiver com.tmall.htc.BootBroadcastReceiver: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.app.ActivityThread.access$2400(ActivityThread.java:117)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.os.Handler.dispatchMessage(Handler.java:99)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.os.Looper.loop(Looper.java:123)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.app.ActivityThread.main(ActivityThread.java:3683)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at java.lang.reflect.Method.invokeNative(Native Method)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at java.lang.reflect.Method.invoke(Method.java:507)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at dalvik.system.NativeStart.main(Native Method)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.app.ContextImpl.startActivity(ContextImpl.java:621)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at com.tmall.htc.BootBroadcastReceiver.onReceive(BootBroadcastReceiver.java:64)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1794)02-10 13:26:11.048: ERROR/AndroidRuntime(17173): ... 10 more02-10 13:26:11.078: WARN/ActivityManager(68): Force finishing activity com.tmall.htc/.Iphone
发生错误原因分析:
主要原因是
02-10 13:26:11.048: ERROR/AndroidRuntime(17173): Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Content的startActivity方法,需要开启一个新的task。
如果使用 Activity的startActivity方法,不会有任何限制,因为Activity继承自Context,已重载了startActivity方法。
解决办法:
按照错误提示,添加一个FLAG_ACTIVITY_NEW_TASK flag
public void onReceive(Context context, Intent intent) {……Intent startiPhone = new Intent(context, Iphone.class);startiPhone.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(startiPhone);……}
更多相关文章
- android转页面
- Android(安卓)aspectJ Aop
- Android通过反射实现强制停止应用程序的方法
- MediaPlayer+Stagefright架构(音频)图解
- 【android】解决Viewpager设置高度为wrap_content无效的方法
- Android(安卓)JNI入门第三篇——jni头文件分析
- Android(安卓)CollapsingToolbarLayout:将ActionBar载入Toolbar(2)
- Android(安卓)viewpager 拿到当前显示的 fragment 的实例
- android listview 的使用方法