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

解决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)对系统进行修改的强大框架,它允许开发者在系统调用层面进行插桩...

    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、以太网)管理的工具,它可以自动检测、连接和断开网络...

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

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

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

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

    SelectActivity-过滤startActivity请求

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

    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报错解决的解决方法解

    MTK 刷机报错问题

    MTK 刷机报错 提示及解决方法。各类报错提示都有,比较全面的文档。

    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.

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

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

    ORACLE启动报错常见问题解决

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

    两个Activity在调用StartActivity的时候传递序列化信息

    这里的"两个Activity在调用StartActivity的时候传递序列化信息"就是指在启动一个新Activity时,将数据以序列化对象的形式作为Intent的一部分进行传输。 首先,让我们理解什么是序列化。序列化是将对象的状态转换为...

    解决dubbo启动报错的问题

    解决dubbo启动报错,加载失败问题。

    详解Vue项目在其他电脑npm run dev运行报错的解决方法

    并使用 npm run dev 或 npm run start 发生以下报错的解决方法。 报错原因 缺少 node_modules 里面的依赖。在项目目录下使用 npm install 然后再 npm run dev。 如果在这一步当中, npm install 执行的过程中,...

    Android AOSP 6.0.1 常规startActivity启动流程分析

    在App开发过程中,界面之间的跳转非常频繁,在一个Activity中启动另一个Activity一般都是通过startActivity方法实现的。Activity如何在Framework中运作这是我多年以来的困惑之一。以下代码分析基于Android 6.0.1,...

Global site tag (gtag.js) - Google Analytics