android 6.0 以後在 Fragment 中申請執行時許可權無法回撥 onRequestPermissionsResult
阿新 • • 發佈:2019-02-09
一般情況下我們在activity中申請許可權,然後在onRequestPermissionsResult中處理回撥,但是在fragment中申請許可權時,在onRequestPermissionsResult中無法收到回撥方法。
下面提供兩種解決辦法:
第一種:在Activity中的onRequestPermissionsResult方法中進行處理把事件傳遞到fragment中
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
super .onRequestPermissionsResult(requestCode, permissions, grantResults);
// 獲取到Activity下的Fragment
List<Fragment> fragments = getSupportFragmentManager().getFragments();
if (fragments == null)
{
return;
}
// 查詢在Fragment中onRequestPermissionsResult方法並呼叫
for (Fragment fragment : fragments)
{
if (fragment != null)
{
// 這裡就會呼叫我們Fragment中的onRequestPermissionsResult方法
fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
第二種:
不使用activity的
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE);
使用fragment的
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE);