解决方案 »

  1.   

    楼主,关于启动收不到系统广播这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。
    原因如下:
    谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。
    当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
      

  2.   

    MainActivity跳转到LockActivity的时候,把自己finish()掉,这样你把LockActivity finish()掉就不会再回到MainActivity了。
      

  3.   

    我也碰到过这问题。有个很简单的方法就是将你的apk,安装到/system/app/下,这样你的app就成了系统级的应用,所所有的广播都可以接收到
      

  4.   

    我在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>
    你可以试试。
      

  5.   

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

  6.   

    那为什么我的是用eclipse装的可以收到开机广播,但是直接安装apk就不行???
      

  7.   

    root过的手机有一个应用权限设置,必须赋予自启动权限才能收到开机广播的
      

  8.   

    直接将你的apk拷贝到/system/app/下就可以了
      

  9.   

    直接将你的apk拷贝到/system/app/下就可以了手动通过命令我知道怎么烤,关键是我想通过代码实现,应用装在别人手机上,我不能每个都去手动拷贝吧?
      

  10.   

    你去百度一下吧,搜索如何实现将程序安装到system/app/下,我之前也做过,但是找不到源码了。当谈前提是系统有了root权限
      

  11.   


    但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?
      

  12.   


    但是360,wifi万能钥匙等软件依然能做到开机自启动,这是为什么呢?http://blog.csdn.net/whu_zhangmin/article/details/18654031
    后来自己做试验写了一篇博文,之前的理解还是纯理论,可能有点错误
      

  13.   

    你好,我可以修改系统,怎样修改,就可以是固定的一个应用在从没有启动的情况下能收到intent?
      

  14.   

    楼主试试这个呢。我一直在用的代码。
    配置:
    <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);  
    }}
      

  15.   

    jiangnaisong你好,我用了你的方案,但我用的系统广播是解锁广播,测试发现测试的所有三星手机通过了,联想,小米,没有通过,华为也通过了。不知道你有没有遇到过,可否点播一下?
      

  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>
    程序代码:
    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);  
        }
     
    }我也是重启后没有收到广播,然后用了这个方法还是不行,别人曾用我的代码测试成功了的
      

  17.   

    android 4.0以上,程序安装完要手工运行一次,使其激活。再重启就能监听到开机广播了!你可以试试