android 6.0許可權,onRequestPermissionsResult回撥不執行
阿新 • • 發佈:2019-01-30
一、正常的使用方法
如果應用具有此許可權,方法將返回PackageManager.PERMISSION_GRANTED,並且應用可以繼續操作。
如果應用不具有此許可權,方法將返回PERMISSION_DENIED,且應用必須明確向用戶要求許可權。
//檢查許可權
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION _GRANTED) {
Log.e("--------->", "沒有許可權");
//申請授權
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
} else {
Log.e("--------->", "已經被授權");
}
授權回撥
//處理許可權申請回調(寫在Activity中)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1: {
// 授權被允許
if (grantResults.length > 0
&& grantResults[0 ] == PackageManager.PERMISSION_GRANTED) {
Log.e("-------->", "授權請求被允許");
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
Log.e("-------->", "授權請求被拒絕");
}
return;
}
}
}
二、onRequestPermissionsResult回撥不執行
有的時候我們可能在fragment中去檢查許可權、申請許可權,自然就認為回撥也就寫在fragment中了,而且寫了之後也沒有報任何錯。這也就是為什麼回撥方法不執行的原因,所以我們把這個回撥移到這個Fragment所依附的那個Activity,就可以順利執行啦。(注意,我這裡說的Fragment是v4包下的)