1. 程式人生 > >android 6.0許可權,onRequestPermissionsResult回撥不執行

android 6.0許可權,onRequestPermissionsResult回撥不執行

一、正常的使用方法

如果應用具有此許可權,方法將返回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包下的)