美文网首页
Android开机自启

Android开机自启

作者: 满船清梦忆星河 | 来源:发表于2021-10-19 10:07 被阅读0次

第一步: 新建跳转到设置页面的弹窗

fun initSetDialog() {
if (dialog != null && dialog!!.isShowing) {
return
}
dialog = showSetDialog("",
"是否开启应用自启动",
"开启",
"放弃",
DialogInterface.OnClickListener { dialog, which ->
SharedPreferUtil.saveSharedValue("isSet", true)
goSetting()
},
DialogInterface.OnClickListener { dialog, which -> dialog.dismiss() })
dialog?.show()
}

fun goSetting() {
    var componentName: ComponentName? = null
    val sdkVersion = Build.VERSION.SDK_INT
    try {
        val intent = Intent()
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        //跳自启动管理
        if (sdkVersion >= 28) {//9:已测试
            componentName =
                ComponentName.unflattenFromString("com.huawei.systemmanager/.startupmgr.ui.StartupNormalAppListActivity")//跳自启动管理
        } else if (sdkVersion >= 26) {//8:已测试
            componentName =
                ComponentName.unflattenFromString("com.huawei.systemmanager/.appcontrol.activity.StartupAppControlActivity")
        } else if (sdkVersion >= 23) {//7.6:已测试
            componentName =
                ComponentName.unflattenFromString("com.huawei.systemmanager/.startupmgr.ui.StartupNormalAppListActivity")
        } else if (sdkVersion >= 21) {//5
            componentName =
                ComponentName.unflattenFromString("com.huawei.systemmanager/com.huawei.permissionmanager.ui.MainActivity")
        }
        //componentName = new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity");//锁屏清理
        intent.component = componentName
        startActivity(intent)
    } catch (e: Exception) {
        //跳转失败
    }

}

@SuppressLint("CheckResult")
fun getPermissions() {
    rxPermissions = RxPermissions(this)
    rxPermissions.request(
        Manifest.permission.WRITE_EXTERNAL_STORAGE
    ).subscribe {
        if (it) {
            if (!SharedPreferUtil.getSharedValue("isSet", false)) {
                initSetDialog()
            }else {
                MainNewActivity.APIs.actionStart(this@WelcomeActivity)
            }
        } else {
            return@subscribe
        }
    }
}

override fun onResume() {
    super.onResume()
    if (SharedPreferUtil.getSharedValue("isSet", false)) {
        finish()
        MainNewActivity.APIs.actionStart(this@WelcomeActivity)
      }
    }

fun showSetDialog(
    title: String,
    message: String,
    confirmText: String,
    cancelText: String,
    confirmListener: DialogInterface.OnClickListener,
    cancelListener: DialogInterface.OnClickListener
): Dialog {
    val builder = AlertDialog.Builder(this)
    builder.setTitle(title)
    builder.setMessage(message)
    builder.setPositiveButton(confirmText, confirmListener)
    builder.setNegativeButton(cancelText, cancelListener)
    val dialog = builder.create()
    dialog.window!!.setGravity(Gravity.CENTER)
    return dialog
}

第二步:创建开机自启的接收器
class LaunchRecevier : BroadcastReceiver() {
private val ACTION = "android.intent.action.BOOT_COMPLETED"
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == ACTION) {
val myIntent = Intent(context, WelcomeActivity::class.java)
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(myIntent)
}else {
println("开机自启---")
}
}
}

第三:在清单文件里面注册
<receiver android:name=".receiver.LaunchRecevier">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter >

<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
<data android:scheme="file">
</data>
</intent-filter>
</receiver>

相关文章

网友评论

      本文标题:Android开机自启

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