android接受不到开机广播 5

manifast里注册<receiverandroid:name=".BootReceiver"><intnet-filter><actionandroid:name="... manifast里注册
<receiver android:name=".BootReceiver" >
<intnet-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT"/>
</intnet-filter>
</receiver>

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

但是在BootReceiver中接受不到广播
@Override
public void onReceive(Context context, Intent intent) {
Log.i("TAG", "系统启动完毕");
}
这是怎么回事,代码有问题么?
展开
 我来答
百度网友30bb719
2013-04-11 · TA获得超过348个赞
知道小有建树答主
回答量:310
采纳率:75%
帮助的人:210万
展开全部
intent 判断 intent.getAction()是否与 android.intent.action.BOOT_COMPLETED 相同,发出的是这个,你没监听这个Action 。 另外注意的是,如果是 3.1以下的系统,没问题。3.1以上的系统,需要有Activity存在,并且启动一次程序,才能够实现广播。
追问
如果我是4.0系统的话,要怎样才在系统启动完毕后开启自己的服务
追答
之前说了,你安装好自己的应用后,启动一下该APP,然后开机以后就会存在这个广播,就可以实现开机自启了。  需要例子的话,再说,你自己先试着。
胖龙v5
2013-04-10 · TA获得超过869个赞
知道答主
回答量:104
采纳率:0%
帮助的人:64.9万
展开全部
不在manifest中注册 在代码中手动注册一下试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JulioHu706
2015-11-07 · TA获得超过653个赞
知道小有建树答主
回答量:789
采纳率:0%
帮助的人:436万
展开全部
android4.0以后就禁用了第三方APP的开机广播,只有系统应用才能收到开机广播。官网文档就这么说的。还有就是第三方APP必须要启动过一次才能接收到,如果你的app没有任何界面,只是在后台启动一个服务,google会认为是流氓软件,禁止启用开机广播。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友996acf675
2015-03-30
知道答主
回答量:4
采纳率:0%
帮助的人:5354
展开全部
你的代码没问题。开机启动服务需要系统权限,如果你是用adb install 安装的apk是普通用户权限,服务启动不起来。因此你要把apk推到system/app目录下则是拥有系统权限的应用就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宁小哥的分享
2013-04-11 · TA获得超过273个赞
知道小有建树答主
回答量:228
采纳率:0%
帮助的人:311万
展开全部

你就实现了抽象类,没看到这个类在哪个activity调用啊?,是".BootReceiver"吗,在activity或其他类中也可以用代码注册,就是 调用类似下面RegisterBoradcastReceiver() ,还可以this.getActivity().unregisterReceiver(mBroadcastReceiver);取消注册

//
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("android.intent.action.BOOT_COMPLETED")) {
Log.i("TAG", "系统启动完毕");
}
}
};
////this.getActivity(),如果本身就是activity就不用get了
private void getActivityRegisterBoradcastReceiver() {
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction("android.intent.action.BOOT_COMPLETED");
this.getActivity().registerReceiver(mBroadcastReceiver,
myIntentFilter);
}
还有,开机广播之前,你确定你的服务启动了吗,需要安装在内存,刷进去最好
追问
实现的广播接受者可以在manifast.xml中进行注册后就可以使用了,没必要用activity什么的来动态注册。我的应用也是装在内存里的,我不知道你表述的是不是有问题,我是想依靠开机广播来开启我的服务,不是要我的服务比开机广播还要早。
追答
哦,看来你的服务进程没有被系统的启动广播自动启动起来。你添加了开机自启动的权限,不代表服务进程就启动了啊,有可能被禁止了(360之类),有可能你的启动模式是快速启动(2.3以后的就支持),代码没问题,需要添加一个判断action name的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式