1

에 "어떤 APN 설정을 쓸 수있는 권한"오류가 발생하지 않습니다,하지만 난 안드로이드 6.0 이상과 장치에서 실행하려고 할 때,이 오류가있어 :내 응용 프로그램 아래 안드로이드 5.0에서 잘 작동하고 안드로이드 6

Writing exception to parcel 
               java.lang.SecurityException: No permission to write APN settings 
                at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:4058) 
                at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:2724) 
                at android.content.ContentProvider.query(ContentProvider.java:1058) 
                at android.content.ContentProvider$Transport.query(ContentProvider.java:245) 
                at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) 
                at android.os.Binder.execTransact(Binder.java:453) 

도움을 주시면 감사하겠습니다.

+0

이 예외를 생성하는 방법을 보여주는 [mcve]를 제공하는 것이 좋습니다. – CommonsWare

+0

참조 http://stackoverflow.com/questions/37343094/read-current-apn-name-from-code-root/43933865#43933865 – pringi

답변

3

아마도 런타임에 권한을 얻지 못할 수도 있습니다. 이렇게하십시오

int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_APN_SETTINGS); 
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
     //requesting permission 
     ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_APN_SETTINGS}, 1); 
    } else { 
     //permission is granted and you can change APN settings 
    } 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { 
    switch (requestCode) { 
     case 1: { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       //premission granted by user 
      } else { 
       //permission denied by user 
      } 
     } 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
}