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
}
相关推荐
ConardLi4 小时前
分析了 100 万亿 Token 后,得出的几个关于 AI 的真相
前端·人工智能·后端
阿珊和她的猫4 小时前
UTF - 8 编码在 HTML 中的重要性
前端·html
某空m4 小时前
【Android】浅析DataBinding
android·开发语言
加油乐4 小时前
css及js实现正反面翻转
前端·javascript·css
恶猫4 小时前
抖音直播时,飘窗提示的html窗口,主播不在,正在喝9
前端·html·直播·抖音·素材
霁月的小屋4 小时前
Vue组件通信全攻略:从基础语法到实战选型
前端·javascript·vue.js
腾讯云云开发4 小时前
【你可能不知道的开发技巧】一行代码完成小程序的CloudBase鉴权登录
前端·后端·微信小程序
Micro麦可乐4 小时前
前端真的能防录屏?EME(加密媒体扩展) DRM 反录屏原理 + 实战代码
前端·媒体·eme·drm·前端防盗录
一 乐4 小时前
校园社区系统|基于java+vue的校园悬赏任务平台系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
晚霞的不甘5 小时前
华为云 DevUI 实战开发指南:构建现代化前端应用的最佳实践
前端·华为云