Android 使用广播系统解决app开机自启动问题

作者: Swift社区 | 来源:发表于2017-06-27 09:44 被阅读3010次

总结一下使用ACTION_BOOT_COMPLETED的广播,解决app开机自启动的问题
1.首先在你的工程上建一个广播接受的类,继承BroadcastReceiver:

package guide.example.com.guidedemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by fby on 2017/6/26.
 */

public class BootReceiver extends BroadcastReceiver {
    static final String action_boot ="android.intent.action.BOOT_COMPLETED";

    @Override
    public void onReceive (Context context, Intent intent) {

        Log.i("charge start", "启动完成");

        if (intent.getAction().equals(action_boot)){

            Intent mBootIntent = new Intent(context, MainActivity.class);
            // 下面这句话必须加上才能开机自动运行app的界面
            mBootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mBootIntent);
        }
    }
}

2.然后要在AndroidManifest.xml中加入权限和配置相关信息:

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

3.在application标签中,配置以下相关信息:

//BootReceiver是上面建的广播类
        <receiver android:name=".BootReceiver">  
            <intent-filter>  
                <!--注册开机广播地址-->  
                <action android:name="android.intent.action.BOOT_COMPLETED">            
                </action>  

                <category android:name="android.intent.category.DEFAULT" />  
            </intent-filter>  
        </receiver>  

补充说明:
1.查看系统中是否安装了类似360管家的软件,为了加快开机速度,默认是关闭掉开机广播的,只需要在设置中打开即可。
2.如果监听不到广播,可以尝试同时监听广播和sd卡。
3.同时监听广播和sd卡,在application标签中,配置以下相关信息:

    <receiver android:name=".broadcastReceiver.BootCompletedReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />

                <category android:name="android.intent.category.HOME" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />

                <data android:scheme="package" />
            </intent-filter>

        </receiver>

希望可以帮助大家
如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
Android技术交流群:591625129

相关文章

  • Android 使用广播系统解决app开机自启动问题

    总结一下使用ACTION_BOOT_COMPLETED的广播,解决app开机自启动的问题1.首先在你的工程上建一个...

  • App开机自启动

    App开机自启动 通过开机广播来实现自启动 定义开机广播 在AndroidManifest.xml注册BootCo...

  • Android 开机自启动 App

    Android 设备开机自启动的可以用广播实现,因为 Android 设备开机时会发送一条开机广播 "androi...

  • Android App 开机自启动

    Android 设备开机自启动的可以用广播实现,因为 Android 设备开机时会发送一条开机广播 "androi...

  • Android应用自启动机制

    一般应用自启动是通过开机广播实现。1.系统开机后,系统产生并发送开机广播,同时设置开机广播的Flag为FLAG_e...

  • Android 应用自启动

    如何实现开机自启动? 1 添加广播类 2 清单文件中添加权限及注册广播 开机自启动验证 使用 adb 命令方式发送...

  • Android 实现程序开机自启动

    Android 设置程序开机自启动 编写一个广播类 代码如下: 在manifests中注册这个广播 在manife...

  • System trace traceview分析工具

    分析Android系统app性能问题,使用Systrace文件分析找出引起系统卡顿,反应慢的原因,开机慢等问题 1...

  • BroadcastReceiver详解及应用

    使用Android手机的时候,我们的手机管家中经常会出现开机自启动某某app,那么对于这个某某APP来说,他是怎么...

  • Android广播机制

    广播分为标准广播 和 有序广播一、标准广播 三、系统广播Android内置很多系统级别广播,如手机开机后发一条广播...

网友评论

  • 我的天空等待:OPPO 机,Android5.1上开机不能自启:sweat:
  • 单人旁_ee3a:作者能发完整的demo 给我? 1980592730@qq.com
    单人旁_ee3a:@展菲 我用我手机有时候 启动不了 有时候可以 好像是要 开机后 自己手动打开一次app 才可以
    单人旁_ee3a:@展菲 如何保证 每次开机都会自启app
    Swift社区:@单人旁_ee3a 591625129,这是Android交流群,有什么问题也可以在群里交流。源码链接:https://github.com/fanbaoying/PowerBoot
  • 不逃跑的小鱼干:博主有demo吗?可不可以发我一份,我用这种方式一直监听不到开机的广播。
    1090233191@qq.com
    ps:问一下,博主你最下边写的是监听应用的添加删除和更新吗? 为什么要监听这些?
  • b16764c0f8a0:我现在就是使用的这个方法,开机后是启动了,但是有一个问题就是再开机后的一瞬间,没有直接到启动的app,而是在主页面删了一下,有接近一秒钟的时间?这是怎么回事啊?是广播发送的慢了?还是怎样?该怎样处理啊,在线等啊!!!
    浅吟且行的时光:@展菲 参考代码可以发我一份吗? 邮箱:1099284882@qq.com
    Swift社区:我把代码放上了,你测试一下
    Swift社区:@天天向上_8fab 可以试一下同时检测sd卡
  • JerryloveEmily:这个广播的兼容性不是很好,国内大家都知道有这个广播,所以很多厂商都去掉了,特别是机顶盒的,有的定制的ROM,这个广播也会无效,所以开机自启得想其他的办法。
    Swift社区:暂时没有遇到这种问题,有一种办法可以尝试,同时监听广播和sd卡挂载。你觉得怎么样?
  • 厂里的帅小伙:在安卓哪个版本上做的试验??
    Swift社区:sdk,最低版本16,当前版本25。安卓虚拟机版本4.3,真机版本4.4.4
  • 4fc0238b5269:这个早就失效了
    八一3806:好像5.0以上失效了,得同时监听内存卡
    七零八落问号:何来失效一说?
    Swift社区:不可能呀,我就是最近项目还在使用,总结了分享出来

本文标题:Android 使用广播系统解决app开机自启动问题

本文链接:https://www.haomeiwen.com/subject/edbscxtx.html