当前位置:编程学习 > wap >>

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

我在写一个锁屏的android应用,但是在开机启动上功能上没有成功


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


还有一个问题:我的锁屏Activity不是mainActivity,就遇到一个问题,当我解锁的时候就finish()掉LockActivity(锁屏Activity)结束的,这样就出现问题了,当我解锁finish()掉后,出现的就是我的应用的MainActivity而不是锁屏前的界面,所以我就在finish()前加了语句:
用来显示桌面,但是我现在的问题就是不管你锁屏前面是什么界面,解锁后都是桌面,而不是你解锁前的界面(比如我正在看新闻,超过一定时间没有操作就会锁屏掉,我解锁后他会回到桌面而不是回到我前面看到新闻界面),请大神指点这里该如何解决,就是解锁后显示锁屏前的界面 android 4.0 开机启动 开机广播 解锁后显示锁屏前的界面 --------------------编程问答-------------------- 楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。
原因如下:
谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),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>

你可以试试。 --------------------编程问答--------------------
引用 2 楼 tantahe 的回复:
MainActivity跳转到LockActivity的时候,把自己finish()掉,这样你把LockActivity finish()掉就不会再回到MainActivity了。

这个方法我也想到了,可是我的mainActivity不想要finish()掉,因为用户没有将它关掉,那我们应该不会主动把自己的软件关掉是吧,我这里找到方法了,就是在manifest中在LockActivity的Activity中加上一条属性:
这样就是将LockActivity重新开启一个栈,然后在LockActivity finish()的时候就不会跳到MainActivity中了 --------------------编程问答--------------------
引用 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>

你可以试试。

这个我网上看过,但是没有成功,刚刚又试过,还是没有成功 --------------------编程问答-------------------- getAction().toString() --------------------编程问答-------------------- 还有  “监听到手机开机了,啦啦啦”换成 “啪啪啪” 就肯定好了的 --------------------编程问答--------------------
引用 1 楼 ncepu307 的回复:
楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。
原因如下:
谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。
当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
正解~ --------------------编程问答-------------------- 那为什么我的是用eclipse装的可以收到开机广播,但是直接安装apk就不行???
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,