android 4.0 手机监听开机广播开机启动 android 4.0开机启动开机广播解锁后显示锁屏前的界面 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。原因如下:谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。 MainActivity跳转到LockActivity的时候,把自己finish()掉,这样你把LockActivity finish()掉就不会再回到MainActivity了。 我也碰到过这问题。有个很简单的方法就是将你的apk,安装到/system/app/下,这样你的app就成了系统级的应用,所所有的广播都可以接收到 我在4.0上是可以的,具体如下: <receiver android:name=".BootBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver>你可以试试。 这个方法我也想到了,可是我的mainActivity不想要finish()掉,因为用户没有将它关掉,那我们应该不会主动把自己的软件关掉是吧,我这里找到方法了,就是在manifest中在LockActivity的Activity中加上一条属性:这样就是将LockActivity重新开启一个栈,然后在LockActivity finish()的时候就不会跳到MainActivity中了 那为什么我的是用eclipse装的可以收到开机广播,但是直接安装apk就不行??? root过的手机有一个应用权限设置,必须赋予自启动权限才能收到开机广播的 直接将你的apk拷贝到/system/app/下就可以了 直接将你的apk拷贝到/system/app/下就可以了手动通过命令我知道怎么烤,关键是我想通过代码实现,应用装在别人手机上,我不能每个都去手动拷贝吧? 你去百度一下吧,搜索如何实现将程序安装到system/app/下,我之前也做过,但是找不到源码了。当谈前提是系统有了root权限 但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢? 但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?http://blog.csdn.net/whu_zhangmin/article/details/18654031后来自己做试验写了一篇博文,之前的理解还是纯理论,可能有点错误 你好,我可以修改系统,怎样修改,就可以是固定的一个应用在从没有启动的情况下能收到intent? 楼主试试这个呢。我一直在用的代码。配置:<receiver android:enabled="true" android:name="edu.njnu.java.BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></receiver>程序代码:public class BootUpReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, Voice_TVBox.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); }} jiangnaisong你好,我用了你的方案,但我用的系统广播是解锁广播,测试发现测试的所有三星手机通过了,联想,小米,没有通过,华为也通过了。不知道你有没有遇到过,可否点播一下? <receiver android:enabled="true" android:name="edu.njnu.java.BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></receiver>程序代码:Java code?1234567891011public class BootUpReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, Voice_TVBox.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }我也是重启后没有收到广播,然后用了这个方法还是不行,别人曾用我的代码测试成功了的 android 4.0以上,程序安装完要手工运行一次,使其激活。再重启就能监听到开机广播了!你可以试试 自己程序启动第三方程序,第三方程序立刻挂掉,怎样自己的不受影响 android开发中流量监控中和中国移动通信的那个模块是怎么实现的。 一个有关Android的页面的跳转的问题 关于canvas.drawtext() 有没有可能将android模拟成一个蓝牙设备? 关于通讯录的问题 android4.0vpn求助,困难重重。求大神帮助。小弟膜拜! android使用swipeBack滑动返回时为什么会出现黑屏现象? 谁能给我一份这样的demo android应用出现反应特别慢的情况 搞安卓往这看,不看会后悔 android 如何listview显示图片文件的缩略图?
原因如下:
谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。
当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
<receiver android:name=".BootBroadcastReceiver"
android:enabled="true" android:exported="true">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
你可以试试。
这样就是将LockActivity重新开启一个栈,然后在LockActivity finish()的时候就不会跳到MainActivity中了
但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?
但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?http://blog.csdn.net/whu_zhangmin/article/details/18654031
后来自己做试验写了一篇博文,之前的理解还是纯理论,可能有点错误
配置:
<receiver
android:enabled="true"
android:name="edu.njnu.java.BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
程序代码:
public class BootUpReceiver extends BroadcastReceiver{ @Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, Voice_TVBox.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}}
android:enabled="true"
android:name="edu.njnu.java.BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
程序代码:
Java code
?
1
2
3
4
5
6
7
8
9
10
11
public class BootUpReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, Voice_TVBox.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}我也是重启后没有收到广播,然后用了这个方法还是不行,别人曾用我的代码测试成功了的