java.lang.SecurityException: com.example.rxtest was not granted this permission: android.permission

1. 错误描述

java.lang.SecurityException: com.example.rxtest was not granted  this permission: android.permission.WRITE_SETTINGS.

java.lang.SecurityException: com.example.rxtest was not granted  this permission: android.permission.WRITE_SETTINGS.
	at android.os.Parcel.createException(Parcel.java:1950)
	at android.os.Parcel.readException(Parcel.java:1918)
	at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:241)

2. 错误原因

使用WRITE_SETTINGS向系统写入数据时,需要打开系统允许应用修改设置;

3. 解决方案

先判断当前应用是否可以向系统写入数据,不可以跳转修改系统设置界面;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    //判断是否可以写入数据到系统
                    if (!Settings.System.canWrite(context)) {
                        Intent i = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                        i.setData(Uri.parse("package:" + context.getPackageName()));
                        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(i);
                    } else {   
                      ...
                      //处理逻辑
                    }
                } else {
                    ...
                   //处理逻辑
                }

4. 案例:修改休眠时间15秒

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    //判断是否可以写入数据到系统
                    if (!Settings.System.canWrite(context)) {
                        Intent i = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                        i.setData(Uri.parse("package:" + context.getPackageName()));
                        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(i);
                    } else {  
                        Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 15*1000);
                    }
                } else {
                    Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT,  15*1000);
                }

 

 

你可能感兴趣的:(Android,系统写入,休眠时间)