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
}
相关推荐
TDengine (老段)39 分钟前
TDengine 字符串函数 TO_BASE64 用户手册
android·大数据·服务器·物联网·时序数据库·tdengine·涛思数据
spencer_tseng2 小时前
Eclipse Oxygen 4.7.2 ADT(android developer tools) Plugin
android·java·eclipse
Nan_Shu_6143 小时前
学习:ES6(2)
前端·学习·es6
来来走走3 小时前
Android开发(Kotlin) 协程
android·java·kotlin
河铃旅鹿4 小时前
Android开发-java版:Framgent
android·java·笔记·学习
邮专薛之谦5 小时前
Kotlin 全知识点复习+详细梳理
windows·kotlin·android studio·idea
命运之光6 小时前
【最新】ChromeDriver最新版本下载安装教程,ChromeDriver版本与Chrome不匹配问题
前端·chrome
星离~8 小时前
Vue响应式原理详解:从零实现一个迷你Vue
前端·javascript·vue.js
2501_916008898 小时前
手机抓包app大全:无需root的安卓抓包软件列表
android·ios·智能手机·小程序·uni-app·iphone·webview
百锦再8 小时前
第18章 高级特征
android·java·开发语言·后端·python·rust·django