Android自启动整理

Android开机自启动APP设置

带有自启动广播的APP (低版本(5.0以下),模拟器,定制系统)

1.预植入系统目录

/system/app/应用目录/my.apk

系统启动就会启动应用

2.普通安装

​ 第一次 系统启动不会启动应用 ,打开应用

​ 第二次 就会自启动

关于sharedUserId:
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。
那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,
这样就 有权限来修改相关系统设置了,比如系统时间
Code
  
  
 在 AndroidManifest.xml中
 <!--开机启动-->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 
  
  <application
     /// 可选
   android:sharedUserId="android.uid.system">
  
  <!--启动监听广播-->
        <receiver android:name=".receiver.BootBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
    </application>    
        
   public class BootBroadcastReceiver extends BroadcastReceiver {
    public static final String TAG BootBroadcastReceiver.class.getSimpleName();
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
            Logger.d(TAG,"Action=="+intent.getAction());
            restartApplication(context);
        }
    }
}    

    /**
     * 重启应用
     * @param context
     */
    public static void restartApplication(Context context) {
        final Intent intent =   context.getPackageManager().
        getLaunchIntentForPackage(context.getPackageName());
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
    }


adb发送BOOT_COMPLETED
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

命令发送BOOT_COMPLETED广播,而不用重启测试机或模拟器来测试BOOT_COMPLETED广播,
这条命令可以更精确的发送到某个package,如下:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c 
android.intent.category.HOME -n package_name/class_name

在Android5.0以上手机需要用户手动开启自启动权限

Note:在高版本手机上不建议设置开机自启动

一台HuaWei P30 上收不到启动广播(设置自启动管理也无效);

普通安装
.so库放在 data/app/lib 下

预植入系统
.so库放在system/lib下

参考:Android如何通过shareduserid获取系统权限

Android针对高版本实现开机自启动时无法监听BOOT_COMPLETED的处理方法

android应用开机自启动及失败原因(BOOT_COMPLETED应用)

Android应用 开机自启动

Android 程序随开机自动运行

Android 程序随开机自动运行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值