프로그램/Android

안드로이드 java.lang.SecurityException 에러

잡식성초보 2017. 8. 28. 16:31

아래와 같은 안드로이드 Error


java.lang.SecurityException: kr.co.kwon was not granted  this permission: android.permission.WRITE_SETTINGS 


에러를 읽어보면 WRITE_SETTINGS 퍼미션이 없다고 한다. 그래서 아래 퍼미션을 준뒤


<uses-permission android:name="android.permission.WRITE_SETTINGS" />



ContextCompat.checkSelfPermission 을 이용하여 WRITE_SETTINGS 셋팅에 대한 


퍼미션 체크를 물어도똑같다. 이 SecurityException Settings.System.canWrite(this) 를 


이용하여 처리하여야 한다.( canWrite이 없는 경우가 있다. 그땐 targetSdkVersion을 최상으로 올려주시면 됩니다. 25부터인가?  함수가 보일것입니다.)



아래와 같은 로직이라면 된다.



public boolean checkSystemPermission() {

    boolean permission = true;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {   //23버전 이상
        permission = Settings.System.canWrite(this);
        Log.d("test", "Can Write Settings: " + permission);
        if(permission){
            Log.e("test", "허용");
        }else{
            Log.e("test", "불허용");
            Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
            intent.setData(Uri.parse("package:" + getPackageName()));
            startActivityForResult(intent, 2127);
            permission = false;
        }
    } else {
        
    }
    
    return permission;
}


반응형