zoukankan      html  css  js  c++  java
  • android 4.0.3开机时不能收到广播


    ====================问题描述====================
    在android 4.0.3的手机上,receiver在手机开机后收不到启动广播,代码如下:

    配置文件:
       <receiver android:name=".Boot_test" >
             <intent-filter  >
                  <action android:name="android.intent.action.BOOT_COMPLETED" >
                  </action>
             </intent-filter>
       </receiver>

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


    java文件:
    public void onReceive(Context context, Intent intent) {
    // TODO 自动生成的方法存根
            Log.v("测试", "手机启动完成了");
    }

    这个在配置在android 4.0.3的手机里怎么也接收不到开机广播,在其他版本的手机里正常接收,网上搜了:
    大约是说有几个原因:
    (1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加
    (2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的
    (3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
    (4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
    Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播。直到被启动过(用户打开或是其他应用调用)才会脱离这种状态,所以Android3.1之后
    (1)、应用程序无法在安装后自己启动
    (2)、没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。

    上述几个原因我都排除了,而且,我在这台机器上装了其他两个软件,这两个软件都能开机启动服务,也就是说这二个软件能收到启动广播!!
    各位大侠:跪求了,高分奉上!
    ====================解决方案1====================
    说一下我的看法
    1.<category android:name="android.intent.category.HOME" />在清单文件中的receive上加上这句话
    2.将你的程序置为/system/app/下
    3.安装完成之后首先启动一次应用程序

    之前也碰到过这种情况,网上都说这是3.0以后的限制,只有系统级别的应用才可以收到开机广播,所以只能把程序放到/system/app下,然后一切ok
    ====================解决方案2====================
    Manifest文件中没有加permission权限吧?
    楼主看我的博客,我这里有记录:
    http://blog.csdn.net/whu_zhangmin/article/details/18654031
    ====================解决方案3====================
    有系统权限可以收到广播自启动 没有不行
    ====================解决方案4====================
    跟着学习下~~~
    ====================解决方案5====================
    引用 5 楼 bj_yj2005 的回复:
    android4.0.3,将公信卫士装在SD卡中,照样开机自启,崩溃中。。。
    另外,请教u010457784:如何将app装在/System/app/下面?
    请教依然绿茶:如何获得系统权限?

    app安装在/system/app方法:
    1、要么你是手机厂商,那么eng版本直接adb push到/system/app目录下。
    2、三方应用的话,需要root手机,可以安装一个百度一键root或者360root,root之后,先将apk拷贝到sd
    adb shell
    su
    cp -fr 源apk地址 /system/app

    获得系统权限:
    厂商就不说了
    上面说的手机root
    要不然除非有手机系统的签名,不然没辙


    ====================解决方案6====================
    楼主问题解决没?   开机自启动
    ====================解决方案7====================
    引用 9 楼 bj_yj2005 的回复:
    依然绿茶:没有解决!公信卫士和wifi万能钥匙这两个软件在我这台手机上用360手机助手装上,运行一次后,就能开机自启动,按你上述的方法,相信在我的手机上能搞定,可是普通用户这样搞难度就大了,上述两款软件是怎样实现开机自启的?而且公信卫士装在SD卡上也能开机自启!!

    你在设置  应用程序中 强行停止 这两个程序,然后再重启手机,这两个哥肯定不能开机自启动了。
    ====================解决方案8====================
    我也有这个问题,同学习了
  • 相关阅读:
    PHP标准库 (SPL) 笔记
    PHP反射
    PHPer书单
    深入理解面向对象——六大基本原则
    Session自定义存储及分布式存储
    06- Shell脚本学习--其它
    05- Shell脚本学习--函数
    04- Shell脚本学习--条件控制和循环语句
    03- Shell脚本学习--字符串和数组
    02- Shell脚本学习--运算符
  • 原文地址:https://www.cnblogs.com/lianxu61/p/4011074.html
Copyright © 2011-2022 走看看