1. 程式人生 > >android 6.0 以後在 Fragment 中申請執行時許可權無法回撥 onRequestPermissionsResult

android 6.0 以後在 Fragment 中申請執行時許可權無法回撥 onRequestPermissionsResult

一般情況下我們在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);