Android之调节屏幕亮度(文末附源码)

本文介绍了在Android中如何动态申请修改系统设置的权限,去除自动亮度并封装改变屏幕亮度的代码,包括判断自动亮度、设置自动亮度以及设置系统屏幕亮度的方法。提供了适用于Android 6.0及以上版本的权限申请和回调处理。
摘要由CSDN通过智能技术生成

第一步,我们需要到AndroidManifest.xml中申请权限:

之所以加上tools:ignore="ProtectedPermissions"是因为改变系统设置的权限一般只归系统App所有,所以编译器会报一个警告,加上这个可以忽略警告。

4.2 申请动态权限

如果你的手机系统是Android6.0以上的,那么还得动态申请权限。系统设置权限的动态申请有点特别,它需要跳转到系统的“可修改系统设置”界面,让用户决定是否允许当前应用修改系统设置,然后再在onActivityResult中处理回调结果。

我们在进入BrightnessActivity时就动态申请权限,代码如下:

//修改系统屏幕亮度需要修改系统设置的权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//如果当前平台版本大于23平台
if (!Settings.System.canWrite(mContext)) {
val intent = with(Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)) {
data = Uri.parse(“package:$packageName”)
this
}
startActivityForResult(intent, RQ_WRITE_SETTINGS)
} else {
changeSystemBrightness()
}
} else {
//Android6.0以下的系统则直接修改亮度
changeSystemBrightness()
}

首先调用Settings.System.canWrite(Context)判断手机系统,Android6.0以下的直接允许修改亮度的操作;Android6.0以上的则要进一步判断是否已经获得了修改系统设置的权限,没有的话就要打开如下界面去设置。

修改系统设置界面

无论用户是否授权,我们都需要一个回调,这时onActivityResult就可以派上用场了:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
RQ_WRITE_SETTINGS -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Settings.System.canWrite(mContext)) {
shortToast(“已获取权限”)
changeSystemBrightness()<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值