Android开发 开机自启动功能实现


前言

  此篇博客简单记录关于app自启动Activity与自启动Service的功能,这里的自启动是指设备开机后的自启动。并不是自启动保活。

实现开机自启动需要的条件

需要AndroidManifest.xml添加权限,但是添加了不等于解决问题。自启动权限无法通过,动态或者静态权限授权实际获得。还必需要自行引导用户在设置>应用管理>选择指定应用>开启自启动权限。

    <!-- 接收开机广播的权限,开机是很危险的行为,所以需要此权限 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

具体实现

注册广播

  此广播必需静态注册

在AndroidManifest.xml 注册广播

        <receiver android:name=".SelfStartingReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- 开机广播 -->
            </intent-filter>
        </receiver>

自启动Activity

public class SelfStartingReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent bootIntent = new Intent(context, LogoActivity.class);
        // 这里必须为FLAG_ACTIVITY_NEW_TASK
        bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(bootIntent);
    }
}

自启动Service

public class SelfStartingReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent bootIntent = new Intent(context, PermanentService.class);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            context.startForegroundService(bootIntent);
        }else {
            context.startService(bootIntent);
        }
    }
}

 

 

 

 

End


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM