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
}
相关推荐
liliangcsdn2 分钟前
mac mlx大模型框架的安装和使用
java·前端·人工智能·python·macos
CssHero6 分钟前
基于vue3完成领域模型架构建设
前端
PanZonghui9 分钟前
用项目说话:我的React博客构建成果与经验复盘
前端·react.js·typescript
言兴12 分钟前
教你如何理解useContext加上useReducer
前端·javascript·面试
sunbyte15 分钟前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GoodCheapFast(Good - Cheap - Fast三选二开关)
前端·javascript·css·vue.js·tailwindcss
前端的日常17 分钟前
网页视频录制新技巧,代码实现超简单!
前端
前端的日常18 分钟前
什么是 TypeScript 中的泛型?请给出一个使用泛型的示例。
前端
今禾19 分钟前
一行代码引发的血案:new Array(5) 到底发生了什么?
前端·javascript·算法
ccc101822 分钟前
老师问我localhost和127.0.0.1,有什么区别?
前端
Struggler28129 分钟前
Chrome插件开发
前端