要檢查的權限(在這個例子是使用相機權限):
int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA);
if (permissionCheck == PackageManager.PERMISSION_DENIED) {
// permission is not granted yet, let's ask for it
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
MyActivity.cameraRequestCode);
} else {
// permission is already granted
}
如果ActivityCompat.requestPermissions運行,然後進行對話會出現用戶,之後就可以趕上結果通過覆蓋活動的onRequestPermissionsResult這樣的:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MyActivity.cameraRequestCode: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// action when permission granted
} else {
// action when permission denied
}
return;
}
}
}
MyActivity.cameraRequestCode是一個靜態的INT,可以是任何唯一int值。
感謝您的回答,但我想在不在活動中的適配器上實現回調。相反,如果我嘗試在活動中實現未找到的方法,請不要知道原因。 –
很遺憾,onRequestPermissionsResult只能在活動或片段上覆蓋。如果您希望適配器處理結果,則必須將其從活動/片段傳遞到適配器。 – Archlin