android4.0 杀掉应用后注册静态广播不能启动

静默加载 应用层
博客专家认证
2015-07-13 10:12:12
程序(只有一个activity和broadcastreceiver)注册来电广播,程序在任务栏里存在时,正常。当从任务栏划掉时(kill掉应用进程)后,无法捕获广播。
网上找了很多资料显示说:这是android系统在3.1版本以后为了加强系统安全性和优化性能对系统广播进行了限制。
想问问解决办法。。。。。。
...全文
941 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
索吻的贼 2016-01-21
  • 打赏
  • 举报
回复
引用 16 楼 stven_king 的回复:
引用 15 楼 u013405006 的回复:
弄个service试试,后台服务,这样应该就能有了
说的就是Service被杀死了,怎么重启。。。。。
你说的不是广播吗?是service死掉了?需要通过广播重启service还是?代码中动态注册的广播会随着Activity的kill而kill,我没记错的话,静态的是可以得。然后如果静态注册还是不行的话,就把广播放在service中,前台的任务管理并不会kill掉service。。。
静默加载 应用层 2016-01-20
  • 打赏
  • 举报
回复
引用 17 楼 hjywyj 的回复:
android5.0之前可以试试双进程
恩,现在这个是一种做法,守护进程。但android5.0之后为什么不可以了?????
  • 打赏
  • 举报
回复
android5.0之前可以试试双进程
静默加载 应用层 2016-01-19
  • 打赏
  • 举报
回复
引用 15 楼 u013405006 的回复:
弄个service试试,后台服务,这样应该就能有了
说的就是Service被杀死了,怎么重启。。。。。
索吻的贼 2016-01-18
  • 打赏
  • 举报
回复
弄个service试试,后台服务,这样应该就能有了
静默加载 应用层 2016-01-15
  • 打赏
  • 举报
回复
引用 12 楼 aion380687811 的回复:
startIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 楼上已经有人说了解决办法的。昨天我也遇到这个问题,只要发广播之前,给intent添加这个flag就好了。
这个遇到安全卫士就玩玩,你在framework层做的都可能被各种干掉。只能想让他干掉之后重启
唛头 2016-01-15
  • 打赏
  • 举报
回复
或者你可以想办法让你的程序杀不死!就像qq微信这样一直会存在后台,很难杀死
唛头 2016-01-15
  • 打赏
  • 举报
回复
startIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 楼上已经有人说了解决办法的。昨天我也遇到这个问题,只要发广播之前,给intent添加这个flag就好了。
静默加载 应用层 2016-01-15
  • 打赏
  • 举报
回复
引用 10 楼 photondncs 的回复:
问一下,楼主问题解决了吗
从framework层现在没有办法解决,现在手机厂商各种定制。原生的Android系统已经被改的面目全非了。只能考虑从linux层解决。
若小涯 2015-12-28
  • 打赏
  • 举报
回复
问一下,楼主问题解决了吗
胖蔡 2015-12-19
  • 打赏
  • 举报
回复
android系统对广播接收的设置是,当前默认为不可接收系统广播状态(防止流氓软件),只有当用户运行过该app时才会设置为该app为可以接收系统广播,也就是说我们一般的软件只有打开运行过一次,才可以接收广播(系统级别应用除外)。
daxiniot 2015-12-18
  • 打赏
  • 举报
回复
Android的有些广播监听器必须得依赖于某个服务或者应用才能一直生存,如果服务或者应用被杀掉了,那么广播监听器也会死掉。 可以开一个前台服务,在该前台服务中注册监听器。前台服务不会被划掉杀死,前台服务不死,监听器就会一直有效。有个缺点是 手机屏幕的上面会有一个小图标显示,就像音乐app设置的前台服务那样。
静默加载 应用层 2015-12-18
  • 打赏
  • 举报
回复
引用 6 楼 qq_26800005 的回复:
楼主 解决了吗?
并没有~!
qq_26800005 2015-10-05
  • 打赏
  • 举报
回复
楼主 解决了吗?
oYinCanCan 2015-07-14
  • 打赏
  • 举报
回复
可不可以在Activity里的onDestroy()方法里写一句startBroadcast呢?
静默加载 应用层 2015-07-14
  • 打赏
  • 举报
回复
需要捕获的是系统广播不是由程序自己定义的广播。 楼上说“4.0以后默认flag改变了”,能详细说一下解决办法吗?
AS_MSDN 2015-07-14
  • 打赏
  • 举报
回复
4.0以后默认flag改变了
AS_MSDN 2015-07-14
  • 打赏
  • 举报
回复
Intent startIntent = new Intent(); startIntent.putExtra("pkg", getPackageName()); startIntent.setAction("com.lenovo.speechcamera.start"); startIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); sendBroadcast(startIntent);

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧