2016-12-03 2 views
2

Android диалога разрешения для RECORD_AUDIOAndroid не показывают диалог разрешения для RECORD_AUDIO в Android 6.0

я добавил необходимое разрешение в андроиде манифест

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

и следующий код

private boolean checkPermission() { 
     int result = ContextCompat.checkSelfPermission(this, android.Manifest.permission.RECORD_AUDIO); 
     if (result == PackageManager.PERMISSION_GRANTED) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

private void requestPermission() { 

     if (ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.RECORD_AUDIO)) { 
Toast.makeText(this, "RECORD AUDIO Permission is required.", 
        Toast.LENGTH_LONG).show(); 

     } else { 

      ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.RECORD_AUDIO}, 
        PERMISSION_REQUEST_CODE); 

     } 
    } 
не показывают

и для его проверки

if (!checkPermission()) { 
       requestPermission(); 
      } 

однако диалог спрашивать разрешения или экран с просьбой о разрешении не показано,

Я тестирование на Android 6.0 на эмуляторе

+0

пожалуйста показать ваш Gradle файл –

ответ

2

ActivityCompat.shouldShowRequestPermissionRationale() метод сигнализирует только если сообщение должно быть показано на рисунке. Вы должны запрашивать разрешение независимо от его возвращаемого значения.

Посмотрите на линии 142 в этом примере: https://developer.android.com/samples/RuntimePermissions/src/com.example.android.system.runtimepermissions/MainActivity.html#l142

/** 
* Requests the Camera permission. 
* If the permission has been denied previously, a SnackBar will prompt the user to grant the 
* permission, otherwise it is requested directly. 
*/ 
private void requestCameraPermission() { 
    Log.i(TAG, "CAMERA permission has NOT been granted. Requesting permission."); 

    if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
      Manifest.permission.CAMERA)) { 
     // Provide an additional rationale to the user if the permission was not granted 
     // and the user would benefit from additional context for the use of the permission. 
     // For example if the user has previously denied the permission. 
     Log.i(TAG, 
       "Displaying camera permission rationale to provide additional context."); 
     Snackbar.make(mLayout, R.string.permission_camera_rationale, 
       Snackbar.LENGTH_INDEFINITE) 
       .setAction(R.string.ok, new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         ActivityCompat.requestPermissions(MainActivity.this, 
           new String[]{Manifest.permission.CAMERA}, 
           REQUEST_CAMERA); 
        } 
       }) 
       .show(); 
    } else { 

     // Camera permission has not been granted yet. Request it directly. 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 
       REQUEST_CAMERA); 
    } 
} 
Смежные вопросы