Android应用在未启动的情况下无法收到指定广播的问题总结
来源:互联网 发布:绝地战争源码 编辑:程序博客网 时间:2024/05/19 23:28
一 、问题现象
最近项目上遇见这样一个需求,在程序安装之后,如果收到特定广播,需要程序做XXXX(具体的场景就不写了),我当时想到的方案是在AndroidMainfest文件里添加一个静态注册的广播,比如:
<receiver android:name=".receiver.XXXReceiver"> <intent-filter> <action android:name="XXX.XXX"/> </intent-filter> </receiver>
本以为这样就完事了,但是在测试过程中发现如果程序曾经启动过一次,那么一切都正常,如果是新安装应用,重来都没启动过,这个时候是收不到广播的。。。。
二、问题分析
我是觉得这个不是什么多大的问题,但是测试妹子让我解决,好吧,只好网上收一收答案,一查发现这是因为Android在3.1以后将新安装的应用置为“STOPPED”状态,只有当应用启动过一次之后这个状态才会改变。 至于这样改的目的是什么啦?这个就需要大家自己去考虑了。。
三、问题解决方法
这个问题我们需要修改两个地方来解决,
1、在静态注册广播的时候 指定exported = true
<receiver android:name=".receiver.AddWidgetReceiver" android:exported="true"> <intent-filter> <action android:name="XXX.XXX"/> </intent-filter> </receiver>
2、在发送intent的地方加上FLAG_INCLUDE_STOPPED_PACKAGES
Intent intent = new Intent();intent.setAction("XXX.XXX");intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);sendBroadcast(intent);
原因是从Android 3.1开始,系统给Intent定义了两个新的Flag,分别为FLAG_INCLUDE_STOPPED_PACKAGES(表示包含未启动的App)和FLAG_EXCLUDE_STOPPED_PACKAGES(表示不包含未启动的App),用来控制Intent是否要对处于停止状态的App起作用
0 0
- Android应用在未启动的情况下无法收到指定广播的问题总结
- Android应用在未启动的情况下无法收到指定广播的问题总结
- Android应用在未启动的情况下无法收到指定广播的问题总结
- Android应用在未启动的情况下无法收到指定广播的问题总结
- Android应用在安装后未启动的情况下无法收到开机等各类广播
- Android无法收到指定广播的问题总结
- android系统应用在未root的情况下启动root权限命令方法
- android.intent.action.MEDIA_MOUNTED广播无法收到的问题
- android.intent.action.MEDIA_MOUNTED广播无法收到的问题
- 未启动的应用无法监听到系统广播
- 未启动的应用无法监听到系统广播
- 解决小米手机无法收到开机广播的问题
- 解决小米手机无法收到开机广播的问题
- android 应用无法收到开机广播,无法收到sd卡MOUNTED广播
- Openoffice在redflag6下指定路径安装无法启动的问题
- android 广播在4.0+系统上无法接受的问题
- CFG-ERR-0106 IBM Cognos Configuration在指定时间内未收到IBM Cognos服务的响应。
- [已解决] 收到广播无法启动activity
- 移动端自定义提示框
- ActionBarSherlock 和 SlidingMenu 在Eclipse中的引入和使用
- RxJava 学习笔记(四)
- Laravel 日志
- CURL ERROR 7 Failed to connect to Permission denied
- Android应用在未启动的情况下无法收到指定广播的问题总结
- MySQL单台物理机上单实例多库与多实例单库性能测试
- Git ssh key的生成,由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法
- activity 转化成dialogactivity
- iOS 通过网址URL scheme传值
- Android入门基础:从这里开始
- DLL常用函数
- Java 基础部面试
- jvm之一命令jmap