2016-12-03 78 views
2

Android不顯示RECORD_AUDIOAndroid不顯示權限對話框RECORD_AUDIO在安卓6.0

我已經加入Android清單

<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(); 
      } 

然而對話框詢問許可或屏幕請求許可沒有顯示,

我在模擬器上

+0

請出示您的gradle這個文件 –

回答

2

ActivityCompat.shouldShowRequestPermissionRationale()方法僅有的信號是否應顯示一條消息在Android 6.0測試。無論其返回值如何,您都應該請求權限。

把這個樣品中看看行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); 
    } 
}