安卓合理的改变系统设置字体大小

添加权限 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)
     //Settings.System.putInt(requireContext().contentResolver, Settings.System.ACCELEROMETER_ROTATION, 1);
 } catch (e: ActivityNotFoundException) {
     Toast.makeText(context, "无法找到应用设置页面", Toast.LENGTH_SHORT).show()
 }
override fun onResume() {
    super.onResume()
    fromSettings = SpUtil.getSpUtil().getBoolean("fromSettings",false)
    if (fromSettings){
        //requestPermissions(arrayOf(Manifest.permission.WRITE_SETTINGS), REQUEST_CODE_WRITE_SETTINGS)
        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){ //系统权限,scale放大倍数,2.0f
    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())
    }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值