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 VM
02-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: main
02-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 more
02-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);
……
}
分享到:
相关推荐
Hook StartActivity Demo
Hook android startActivity方法的完整demo 基于xposed + hook技术
c#使用process.start启动程序报错解决方法,大家参考使用吧
解决kali Linux 报错Failed to start network manager的补丁,具体修复过程参考我的博客
而Instrumentation存在于ActivityThread中,有趣的是在应用启动后,有且只有一个ActivityThread对象,那么Instrumentation也只有一个,也就是说不管哪个Context使用startActivity方法都是间接使用同一个...
API28 activity启动流程 包括一张Power Designer的原图 + 一张高清png
UINavigationController_学习笔记
安装完 Android Studio 后启动,却报错如下: 代码如下:failed to create jvm error code -... 您可能感兴趣的文章:Android Studio 引用外部依赖时报错的解决方法androidstudio3.0使用butterknife报错解决的解决方法解
MTK 刷机报错 提示及解决方法。各类报错提示都有,比较全面的文档。
Android多屏显示-StartActivity
在linux上启动jmeter-server报错: Server failed to start: java.rmi.RemoteException: Cannot start. localhost is a loopback address. An error occurred: Cannot start. localhost is a loopback address.
两个Activity在调用StartActivity的时候传递序列化信息
解决dubbo启动报错,加载失败问题。
并使用 npm run dev 或 npm run start 发生以下报错的解决方法。 报错原因 缺少 node_modules 里面的依赖。在项目目录下使用 npm install 然后再 npm run dev。 如果在这一步当中, npm install 执行的过程中,...
在App开发过程中,界面之间的跳转非常频繁,在一个Activity中启动另一个Activity一般都是通过startActivity方法实现的。Activity如何在Framework中运作这是我多年以来的困惑之一。以下代码分析基于Android 6.0.1,...
该文件用于解决sublime text中Markdown Editing插件安装报错的问题。请各位打算下载这个文件的亲确定您的报错信息是我所描述的这种错误信息,以避免下载文件后无法解决您的问题,浪费了积分!!!!
LocalActivityManager类是管理activity的,然后通过startActivity(String id, Intent intent)这个方法获取Window获取当前Window对象,再然后调用getDecorView()方法获取当前activity对应的view,这样就可以使用...
CentOS7 service network start命令启动时报错解决方法
AndroidHookStartActivity AMSHook ... 1.application标签里配置一个壳... startActivity(intent); 原理详解:http://www.jianshu.com/p/2ad105f54d07 更新 1.修复多次hook的问题 2.修复Activity无需和包名一致也能启动