android 申请电池优化,自启动,无障碍权限

复制代码
代码仅用于自己记忆,都是实际跑过的
/**
 * 引导开通-无障碍服务
可以跳转到系统的无障碍功能,并高亮自己的app
 */

fun gotoAccessibilitySetting(context: Context) {
    val EXTRA_FRAGMENT_ARG_KEY = ":settings:fragment_args_key";
    val EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":settings:show_fragment_args";
    try {
        context.startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS).apply {
            val bundle = Bundle()
            val componentName = ComponentName(context.packageName, AssistantService::class.java.name).flattenToString()
            bundle.putString(EXTRA_FRAGMENT_ARG_KEY, componentName)
            putExtra(EXTRA_FRAGMENT_ARG_KEY, componentName)
            putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, bundle)
        })
    } catch (e: Exception) {
        e.printStackTrace()
    }
}
复制代码
    /**
     * 引导开通-电池管理优化
     * 申请加入白名单
两种方法,可以看自己使用哪种
     * */
    fun openBatteryOptimizationSettings(context: Context) {
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//                val intent = Intent()
//                intent.action = Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
//                context. startActivity(intent)
                //方法2、触发系统对话框
                val intent =   Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:"+context.packageName));
                context.startActivity(intent);

            }


        }catch (e:Exception){
            LogUtils.e("openBatteryOptimizationSettings_e=${e.localizedMessage}")
        }

    }
复制代码
/** 自启动有点麻烦,没心情做机型适配的可以直接跳转系统界面
 * 跳转:「应用详情」界面
 */
@JvmStatic
fun gotoAppDetailSetting(mContext: Activity) {
    try {
        val packageName = mContext.packageName
        mContext.startActivity(getAppDetailSettingIntent(packageName))


    } catch (e: Exception) {
        e.printStackTrace()
    }
}
复制代码
/**
 * 获取应用详情页面intent
 *
 * @return
 */
fun getAppDetailSettingIntent(packageName: String?): Intent {
    val localIntent = Intent()
    localIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
    if (Build.VERSION.SDK_INT >= 9) {
        localIntent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
        localIntent.data = Uri.fromParts("package", packageName, null)
    } else if (Build.VERSION.SDK_INT <= 8) {
        localIntent.action = Intent.ACTION_VIEW
        localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails")
        localIntent.putExtra("com.android.settings.ApplicationPkgName", packageName)
    }
    return localIntent
}
相关推荐
自出洞来无敌手(曾令瑶)5 分钟前
浏览器 实时监听音量 实时语音识别 vue js
前端·javascript·vue.js·语音识别
在钱塘江21 分钟前
《你不知道的JavaScript-上卷》-笔记-5-作用域闭包
前端
搬砖码22 分钟前
Vue病历写回功能:实现多输入框内容插入与焦点管理🚀
前端
不简说27 分钟前
史诗级更新!sv-print虽然不是很强,但却是很能打的设计器组件
前端·产品
用户952511514015527 分钟前
最常用的JS加解密场景MD5
前端
Hilaku28 分钟前
“虚拟DOM”到底是什么?我们用300行代码来实现一个
前端·javascript·vue.js
小仙女喂得猪31 分钟前
2025 源码应用: Retrofit之动态更换BaseUrl
android·android studio
打好高远球34 分钟前
mo契官网建设与SEO实践
前端
神仙别闹40 分钟前
基于Java+MySQL实现(Web)可扩展的程序在线评测系统
java·前端·mysql
心.c1 小时前
react当中的this指向
前端·javascript·react.js