android 4.0 手机监听开机广播开机启动

化_十 2013-10-31 10:22:01
我在写一个锁屏的android应用,但是在开机启动上功能上没有成功


这里的权限注册啥的我都写过了,但是在开机时候就是监听不到,我在一篇博客中http://blog.csdn.net/leilu2008/article/details/8933869
看到说是要启动一遍就可以了,我是用eclipse启动的,本来就要在手机中运行一遍,我还将它关掉,然后重新启动软件,然后再手机重启,可是还是接收不到广播,请大神赐教!


还有一个问题:我的锁屏Activity不是mainActivity,就遇到一个问题,当我解锁的时候就finish()掉LockActivity(锁屏Activity)结束的,这样就出现问题了,当我解锁finish()掉后,出现的就是我的应用的MainActivity而不是锁屏前的界面,所以我就在finish()前加了语句:
用来显示桌面,但是我现在的问题就是不管你锁屏前面是什么界面,解锁后都是桌面,而不是你解锁前的界面(比如我正在看新闻,超过一定时间没有操作就会锁屏掉,我解锁后他会回到桌面而不是回到我前面看到新闻界面),请大神指点这里该如何解决,就是解锁后显示锁屏前的界面
...全文
3505 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
2008m 2014-12-02
  • 打赏
  • 举报
回复
android 4.0以上,程序安装完要手工运行一次,使其激活。再重启就能监听到开机广播了!你可以试试
yearnlu 2014-09-12
  • 打赏
  • 举报
回复
<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 ? 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); } } 我也是重启后没有收到广播,然后用了这个方法还是不行,别人曾用我的代码测试成功了的
Zhangjind 2014-08-12
  • 打赏
  • 举报
回复
jiangnaisong你好,我用了你的方案,但我用的系统广播是解锁广播,测试发现测试的所有三星手机通过了,联想,小米,没有通过,华为也通过了。不知道你有没有遇到过,可否点播一下?
云上飞翔 2014-07-16
  • 打赏
  • 举报
回复
楼主试试这个呢。我一直在用的代码。 配置: <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);  
	}

}
huojiaguang 2014-07-16
  • 打赏
  • 举报
回复
引用 1 楼 ncepu307 的回复:
楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。 原因如下: 谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。 当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
你好,我可以修改系统,怎样修改,就可以是固定的一个应用在从没有启动的情况下能收到intent?
依然绿茶 2014-04-01
  • 打赏
  • 举报
回复
引用 18 楼 flyfight88 的回复:
[quote=引用 1 楼 ncepu307 的回复:] 楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。 原因如下: 谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。 当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?[/quote] http://blog.csdn.net/whu_zhangmin/article/details/18654031 后来自己做试验写了一篇博文,之前的理解还是纯理论,可能有点错误
flyfight88 2014-03-31
  • 打赏
  • 举报
回复
引用 1 楼 ncepu307 的回复:
楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。 原因如下: 谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。 当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?
阿布1991 2014-03-28
  • 打赏
  • 举报
回复
你去百度一下吧,搜索如何实现将程序安装到system/app/下,我之前也做过,但是找不到源码了。当谈前提是系统有了root权限
阿布1991 2014-03-27
  • 打赏
  • 举报
回复
引用 12 楼 yangxin_540 的回复:
引用 3 楼 u010457784 的回复:
我也碰到过这问题。有个很简单的方法就是将你的apk,安装到/system/app/下,这样你的app就成了系统级的应用,所所有的广播都可以接收到
那怎么将应用装在安装是直接安装到系统目录下呢
直接将你的apk拷贝到/system/app/下就可以了
菜鸟的封装史 2014-03-27
  • 打赏
  • 举报
回复
引用 15 楼 u010457784 的回复:
引用 12 楼 yangxin_540 的回复:
[quote=引用 3 楼 u010457784 的回复:] 我也碰到过这问题。有个很简单的方法就是将你的apk,安装到/system/app/下,这样你的app就成了系统级的应用,所所有的广播都可以接收到
那怎么将应用装在安装是直接安装到系统目录下呢
直接将你的apk拷贝到/system/app/下就可以了[/quote]手动通过命令我知道怎么烤,关键是我想通过代码实现,应用装在别人手机上,我不能每个都去手动拷贝吧?
紫凌峰 2014-03-26
  • 打赏
  • 举报
回复
都是大神呀 暂时没遇到,但可能以后会有用
失落夏天 版主 2014-03-26
  • 打赏
  • 举报
回复
root过的手机有一个应用权限设置,必须赋予自启动权限才能收到开机广播的
菜鸟的封装史 2014-03-25
  • 打赏
  • 举报
回复
引用 3 楼 u010457784 的回复:
我也碰到过这问题。有个很简单的方法就是将你的apk,安装到/system/app/下,这样你的app就成了系统级的应用,所所有的广播都可以接收到
那怎么将应用装在安装是直接安装到系统目录下呢
踏月 2013-11-02
  • 打赏
  • 举报
回复
引用 1 楼 ncepu307 的回复:
楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。 原因如下: 谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。 当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
正解~
阿布1991 2013-11-01
  • 打赏
  • 举报
回复
我也碰到过这问题。有个很简单的方法就是将你的apk,安装到/system/app/下,这样你的app就成了系统级的应用,所所有的广播都可以接收到
tantahe 2013-11-01
  • 打赏
  • 举报
回复
MainActivity跳转到LockActivity的时候,把自己finish()掉,这样你把LockActivity finish()掉就不会再回到MainActivity了。
依然绿茶 2013-11-01
  • 打赏
  • 举报
回复
楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。 原因如下: 谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。 当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
路人贾 2013-11-01
  • 打赏
  • 举报
回复
还有 “监听到手机开机了,啦啦啦”换成 “啪啪啪” 就肯定好了的
路人贾 2013-11-01
  • 打赏
  • 举报
回复
getAction().toString()
化_十 2013-11-01
  • 打赏
  • 举报
回复
引用 5 楼 yudajun 的回复:
我在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>
你可以试试。
这个我网上看过,但是没有成功,刚刚又试过,还是没有成功
加载更多回复(3)

80,351

社区成员

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

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