添加权限 AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
跳转应用设置页打开修改系统设置权限
try {
fromSettings = SpUtil.getSpUtil().put("fromSettings",true)
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", context.packageName, null)
intent.data = uri
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
} catch (e: ActivityNotFoundException) {
Toast.makeText(context, "无法找到应用设置页面", Toast.LENGTH_SHORT).show()
}
override fun onResume() {
super.onResume()
fromSettings = SpUtil.getSpUtil().getBoolean("fromSettings",false)
if (fromSettings){
getSettingsPermission(2.0f)
}
}
监听requestPermissions()申请权限结果
@Override
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == MY_PERMISSIONS_REQUEST_CALL_CAMERA) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
}
} else if (requestCode == REQUEST_CODE_WRITE_SETTINGS){
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
}
}
}
@Override
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == REQUEST_CODE_WRITE_SETTINGS) {
}
}
修改系统字体大小getSettingsPermission()
private fun getSettingsPermission(scale: Float){
if (Settings.System.canWrite(requireContext())) {
val configuration = resources.configuration
Log.i("twen","修改前 :${configuration.fontScale}")
configuration.fontScale = scale
resources.updateConfiguration(configuration,resources.displayMetrics)
val resolver = requireContext().contentResolver
val fontSizeUri = Settings.System.getUriFor(Settings.System.FONT_SCALE)
val values = ContentValues()
values.put(Settings.System.FONT_SCALE, scale)
resolver.update(fontSizeUri, values, null, null)
Settings.System.putFloat(resolver, Settings.System.FONT_SCALE, scale)
Log.i("twen","修改后 :${configuration.fontScale}")
Toast.makeText(requireContext(),"字体设置成功", Toast.LENGTH_SHORT).show()
val agreeDialog = SetTvSuccessDialog.newInstance()
agreeDialog.show(childFragmentManager, "agreeDialog")
} else {
openAppSettings(requireContext())
}
}