`
debuglog
  • 浏览: 196325 次
社区版块
存档分类
最新评论

解决Content的startActivity方法报错

阅读更多
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);
		……
	}

 

3
0
分享到:
评论

相关推荐

    Hook StartActivity Demo

    动态代理可以创建一个代理类,拦截`startActivity()`调用,然后在代理方法中添加额外的逻辑,如记录日志、统计信息或者改变启动的目标Activity。AspectJ则提供切面编程,允许我们在特定的方法调用前后插入自定义代码...

    hook_startActivity.zip

    本示例"hook_startActivity.zip"主要展示了如何利用Xposed框架来Hook系统的`startActivity`方法。Xposed是一个在Android运行时(Runtime)对系统进行修改的强大框架,它允许开发者在系统调用层面进行插桩...

    c#使用process.start启动程序报错解决方法

    在C#编程中,`Process.Start`方法是一个非常常用的功能,它允许开发者启动新的应用程序或者执行文件。然而,有时候在尝试使用`Process.Start`时,可能会遇到错误,尤其是在以特定用户账户(如Local System)运行服务...

    start activity.zip

    5. **Activity实例化**:AMS通过反射机制创建Activity的实例,并调用其onCreate()方法,这是Activity生命周期的第一个回调。 6. **布局加载**:在onCreate()之后,通常会调用setContentView()来加载布局文件,将...

    解决kali Linux 报错Failed to start network manager的补丁

    下面将详细介绍如何解决这个报错并修复网络管理器。 首先,我们需要理解Network Manager的作用。Network Manager是Linux系统中用于自动化网络接口(如Wi-Fi、以太网)管理的工具,它可以自动检测、连接和断开网络...

    jack报错解决方案参考_jack编译报错解决方案参考_

    在编程和软件开发过程中,遇到错误是常有的事情,尤其是涉及到特定工具或框架时,如...对于那些无法通过常规方法解决的复杂问题,开发者还可以求助于社区论坛、Stack Overflow等资源,寻求其他开发者的经验和解决方案。

    SelectActivity-过滤startActivity请求

    而Instrumentation存在于ActivityThread中,有趣的是在应用启动后,有且只有一个ActivityThread对象,那么Instrumentation也只有一个,也就是说不管哪个Context使用startActivity方法都是间接使用同一个...

    hive的一些报错及解决方法

    ### Hive的一些报错及解决方法 #### 一、Hive连接报错 在更换网络接口卡后重新启动服务时,可能会遇到Hive连接失败的问题。此类问题通常与元数据存储中的异常有关,例如存在多个版本的元数据或者端口被其他服务...

    Android多屏显示-StartActivity

    2. startActivity()方法:调用Context的startActivity()方法并传入Intent对象,启动指定的Activity。 3. startActivityForResult():如果需要从新开的Activity返回结果,可以使用startActivityForResult(),并重写...

    MacOS安装MySql8.0.19及安装报错解决方案.docx

    MacOS 安装 MySql8.0.19 及安装报错解决方案 MacOS 安装 MySql8.0.19 是...本文档指导了 MacOS 上安装 MySql8.0.19 的过程,并解决了可能出现的安装报错问题,最后还提供了应用连接 Mysql 实例的配置方法和参考资料。

    【ASP.NET编程知识】VS2015使用scanf报错的解决方法.docx

    此外,本文还涉及到其他一些相关知识点,例如 C# 使用 Process.Start 启动程序报错解决方法、VS2015 中没有报表项(ReportViewer)的方法、VS2015 在升级到 Update2 之后运行 Cordova 项目异常的解决方案等。...

    Android Studio 报错failed to create jvm error code -4的解决方法

    安装完 Android Studio 后启动,却报错如下: 代码如下:failed to create jvm error code -... 您可能感兴趣的文章:Android Studio 引用外部依赖时报错的解决方法androidstudio3.0使用butterknife报错解决的解决方法解

    SSH配置和经常出现的报错以及解决方法

    #### SSH常见的报错及解决方法 1. **无法连接到SSH服务器:** - **错误提示**:“ssh: connect to host [IP地址] port 22: Connection refused” - **原因**:SSH服务没有运行。 - **解决方法**:确保SSH服务已...

    多线程界面更新报错解决方法

    ### 多线程界面更新报错解决方法 在软件开发过程中,特别是在Windows Forms应用程序中,开发者经常需要在后台线程中执行耗时操作,并且在这些操作完成后更新用户界面(UI)。然而,直接从非UI线程访问或修改UI控件...

    MySQL数据库安装常见报错解决方案汇总.docx

    MySQL数据库安装常见报错解决方案汇总 一、常见问题 1:二次安装时配置文件安装不成功 问题描述:在安装MySQL时,配置文件安装不成功,出现爆红的选项。 解决方案:发生该报错的原因一般是第一安装的MySQL未卸载...

    jmeter在linux上运行报错问题解决.txt

    在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.

    Markdown安装报错解决文件

    该文件用于解决sublime text中Markdown Editing插件安装报错的问题。请各位打算下载这个文件的亲确定您的报错信息是我所描述的这种错误信息,以避免下载文件后无法解决您的问题,浪费了积分!!!!

    ORACLE启动报错常见问题解决

    首先,针对ORA-12500:“TNS:监听程序无法启动专用服务器进程”这个问题,可能的解决方法包括: 1. 注释初始化文件(init.ora或spfile.ora)中的`mts`配置,以禁用多线程服务器模式,然后尝试重启数据库。 2. 检查...

Global site tag (gtag.js) - Google Analytics