2017-01-23 3 views
3

По-видимому, ОС MIUI уже реализовала свою собственную систему разрешений до того, как Marshmallow сделает. В настоящее время я тестирую приложение для записи видео для Xiaomi Mi 4i, которое использует MIUI на основе API 21 [Android 5.0.2], и ему требуется разрешение на запись звука, которое по умолчанию не предоставляется Менеджером разрешений MIUI.Разрешения. Как я могу запросить и/или изменить их на телефонах, запускающих MIUI во время выполнения?

До сих пор как я сумел изменить права доступа является окно разрешений диспетчера для приложения по нажатию на кнопку OK в AlertDialog:

isMIUI = MIUIUtils.isMIUI(); 
if(isMIUI) 
{ 
    AlertDialog.Builder adb = new AlertDialog.Builder(this); 
    adb.setMessage("If you intend to use the video recording feature, please enable the 'Record Audio' permission in the settings menu. You will be redirected there if you press OK.") 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS"); 
       intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity"); 
       intent.putExtra("extra_pkgname", "com.picmix.mobile"); 
       startActivity(intent); 
      } 
     }) 
     .setNegativeButton("CANCEL", null) 
     .create(); 
    adb.show(); 
} 

Но это не достаточно хорошо для меня. Мне нужно проверить, уже разрешено ли разрешение Record Audio в диспетчере разрешений MIUI, чтобы запустить его только один раз.

Как проверить разрешения, предоставленные или подлежащие уведомлению в Менеджере разрешений MIUI программным путем?

ответ

-1
private boolean resourceCanBeAccessed() { 

     boolean response = true; 

     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      if(ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) 
        == PackageManager.PERMISSION_DENIED) { 

       ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECORD_AUDIO}, 1); 
       response = false; 
      } 
     } 
     return response; 
    } 

Вам просто нужно вызвать этот метод перед доступом к ресурсу. Этот метод вернет true, если разрешение предоставлено. Это разрешение не предоставляется, тогда оно предоставит разрешение

+1

Это работает только в Android 6.0 (Marshmallow). Xiaomi Mi 4i был идентифицирован с Android 5.0.2 (Lollipop), и этот код просто вернет значение true для всего, что определено в манифесте (кстати, имеется разрешение «Record Audio»). Менеджер разрешений MIUI делает вещи более сложными, чем просто это. – Gensoukyou1337

Смежные вопросы