1

Мое приложение отлично работает на Android 5.0 и ниже, но когда я попытался запустить его на устройстве с Android 6.0 или выше, я получил эту ошибку:Ошибка «Нет разрешения на запись настроек APN» на android 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); 
    } 
}