android 4.0.3开机时不能收到广播

bj_yj2005 2014-01-21 09:19:54
在android 4.0.3的手机上,receiver在手机开机后收不到启动广播,代码如下:

配置文件:
<receiver android:name=".Boot_test" >
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" >
</action>
</intent-filter>
</receiver>

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
</uses-permission>


java文件:
public void onReceive(Context context, Intent intent) {
// TODO 自动生成的方法存根
Log.v("测试", "手机启动完成了");
}

这个在配置在android 4.0.3的手机里怎么也接收不到开机广播,在其他版本的手机里正常接收,网上搜了:
大约是说有几个原因:
(1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加
(2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的
(3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播。直到被启动过(用户打开或是其他应用调用)才会脱离这种状态,所以Android3.1之后
(1)、应用程序无法在安装后自己启动
(2)、没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。

上述几个原因我都排除了,而且,我在这台机器上装了其他两个软件,这两个软件都能开机启动服务,也就是说这二个软件能收到启动广播!!
各位大侠:跪求了,高分奉上!
...全文
4105 46 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
grandjan 2016-08-06
  • 打赏
  • 举报
回复
引用 39 楼 lovetidal 的回复:
我来结贴吧: 1.安装应用后,首先要启动一次。 2.如果签名后,不可以用eclipse安装apk文件,手动安装好后,也要启动一次。 3.添加以下: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 4.添加以下: <receiver android:name=".BootBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" /> </intent-filter> </receiver> 5.代码部分: public class BootBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //接收广播:系统启动完成后运行程序 if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent ootStartIntent = new Intent(context, Login_Activity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } //接收广播:安装更新后,自动启动自己。 if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED) || intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) { Intent ootStartIntent = new Intent(context, Login_Activity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } } } 总结一下,以上功能,开机自动启动,更新后,也会自己启动自己。
收下初学者的膝盖
MyBaty 2016-05-18
  • 打赏
  • 举报
回复
<intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" /> </intent-filter> 我加了这个filter就解决了
普通熊猫 2015-12-12
  • 打赏
  • 举报
回复
有些手机的系统会禁止第三方应用自启动的,例如小米系统,需要自己到安全中心,自启动管理添加你要自启动的应用!
jianxuanzi 2015-09-22
  • 打赏
  • 举报
回复
39 楼第二条亮了。签名 apk 不能用 eclipse 安装! 我就是这个问题导致无法自启动,感谢! 但是为什么呢?
flying_vip_521 2015-08-22
  • 打赏
  • 举报
回复
引用 41 楼 bisubisu 的回复:
[quote=引用 38 楼 vnking 的回复:] 我来说出原因吧: 楼主的自启动设置是没有问题的,不能启动的原因是被其他什么XX助手之类拦截了,并且他们不会给你一个温馨提示让你知道,只要在所谓的安全中心去掉自己被拦截的标志即可,被这样的低级问题所缠绕,楼主即使是自裁的心情都可以理解。
谢谢哥们,我也有获取网络广播,开机广播失败的情况,百度一直没找到原因。就按你说的,被手机第三方软件屏蔽了。我用的联想手机,应用被乐安全的自启管理屏蔽了,网络广播,开机广播死活接收不到。在乐安全设置后,这两个广播都能正常接收了! [/quote] 我们的软件也有自启动管理功能,就不让你的应用自己跑起来,啥广播都不给你禁用掉,当然,你自定义的我就不管了
山城忙碌人 2015-02-05
  • 打赏
  • 举报
回复
引用 38 楼 vnking 的回复:
我来说出原因吧: 楼主的自启动设置是没有问题的,不能启动的原因是被其他什么XX助手之类拦截了,并且他们不会给你一个温馨提示让你知道,只要在所谓的安全中心去掉自己被拦截的标志即可,被这样的低级问题所缠绕,楼主即使是自裁的心情都可以理解。
谢谢哥们,我也有获取网络广播,开机广播失败的情况,百度一直没找到原因。就按你说的,被手机第三方软件屏蔽了。我用的联想手机,应用被乐安全的自启管理屏蔽了,网络广播,开机广播死活接收不到。在乐安全设置后,这两个广播都能正常接收了!
siyulanyu 2015-01-23
  • 打赏
  • 举报
回复
引用 39 楼 lovetidal 的回复:
我来结贴吧: 1.安装应用后,首先要启动一次。 2.如果签名后,不可以用eclipse安装apk文件,手动安装好后,也要启动一次。 3.添加以下: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 4.添加以下: <receiver android:name=".BootBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" /> </intent-filter> </receiver> 5.代码部分: public class BootBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //接收广播:系统启动完成后运行程序 if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent ootStartIntent = new Intent(context, Login_Activity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } //接收广播:安装更新后,自动启动自己。 if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED) || intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) { Intent ootStartIntent = new Intent(context, Login_Activity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } } } 总结一下,以上功能,开机自动启动,更新后,也会自己启动自己。
<intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"></action> </intent-filter> 我这么写有问题吗,我现在总是接收不到啊,真着急
lovetidal 2014-11-30
  • 打赏
  • 举报
回复
我来结贴吧: 1.安装应用后,首先要启动一次。 2.如果签名后,不可以用eclipse安装apk文件,手动安装好后,也要启动一次。 3.添加以下: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 4.添加以下: <receiver android:name=".BootBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" /> </intent-filter> </receiver> 5.代码部分: public class BootBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //接收广播:系统启动完成后运行程序 if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent ootStartIntent = new Intent(context, Login_Activity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } //接收广播:安装更新后,自动启动自己。 if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED) || intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) { Intent ootStartIntent = new Intent(context, Login_Activity.class); ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(ootStartIntent); } } } 总结一下,以上功能,开机自动启动,更新后,也会自己启动自己。
vnking 2014-10-18
  • 打赏
  • 举报
回复
我来说出原因吧: 楼主的自启动设置是没有问题的,不能启动的原因是被其他什么XX助手之类拦截了,并且他们不会给你一个温馨提示让你知道,只要在所谓的安全中心去掉自己被拦截的标志即可,被这样的低级问题所缠绕,楼主即使是自裁的心情都可以理解。
vnking 2014-10-11
  • 打赏
  • 举报
回复
我的问题也解决了,方法说出来真的会笑死各位,所以我能理解楼主的心情,选择人间蒸发。
vnking 2014-10-11
  • 打赏
  • 举报
回复
我的问题至今没有解决。
zaixinzhong1 2014-10-11
  • 打赏
  • 举报
回复
就应该让这种人一直跪着
rainberda 2014-10-10
  • 打赏
  • 举报
回复
呵呵 我来告诉你们吧 有一个解决办法,不一定都适用,反正我的问题解决了。。 <category android:name="android.intent.category.HOME" /> receiver的intent-filter用这个
softneo 2014-09-12
  • 打赏
  • 举报
回复
SB楼主真无语,这种人,唉!
virbean 2014-08-27
  • 打赏
  • 举报
回复
这楼主太不厚道了吧
binbin846 2014-08-11
  • 打赏
  • 举报
回复
引用 14 楼 bj_yj2005 的回复:
解决了,呵呵,但都不是用楼上各位的方法
怎么弄的
Zhangjind 2014-08-11
  • 打赏
  • 举报
回复
楼主,你可是用的ndk的方法? http://blog.csdn.net/fangzhibin4712/article/details/38316723 本人也被困扰了,但是对ndk实在不在行,大家看看这篇文章,如果搞定了,麻烦点播一下,好造福群众,小弟谢过了
李士乐 2014-07-25
  • 打赏
  • 举报
回复
你可以看下这个对你有帮助http://blog.csdn.net/leilu2008/article/details/8933869
李士乐 2014-07-25
  • 打赏
  • 举报
回复
你可以看下这篇博客,对你会有帮助
贵州山魈羡民 2014-07-02
  • 打赏
  • 举报
回复
楼主不分享出来,只得再次搜搜搜……
加载更多回复(25)

80,472

社区成员

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

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