Android onRequestPermissionsResult仅在Activity上调用,但在Fragment上不调用

时间:2016-07-25 05:45:04

标签: android android-6.0-marshmallow android-permissions

我有一个包含片段的Activity。我要求活动的联系方式如下:

ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_CONTACTS}, REQUEST_CODE_PERMISSION);

从片段我正在请求相机权限:

requestPermissions(new String[] {Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSION);

我对片段和活动都有onRequestPermissionsResult方法。问题是,即使我请求片段的许可,也会调用活动中的onRequestPermissionsResult。片段中的onRequestPermissionsResult不会被调用(但如果我从活动中删除onRequestPermissionsResult则会调用它)。有没有办法适用onRequestPermissionsResult方法?

1 个答案:

答案 0 :(得分:1)

在覆盖{ "value": "SE Asia Standard Time", "abbr": "SAST", "offset": 7, "isdst": false, "text": "(UTC+07:00) Bangkok, Hanoi, Jakarta", "utc": [ "Antarctica/Davis", "Asia/Bangkok", "Asia/Hovd", "Asia/Jakarta", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Saigon", "Asia/Vientiane", "Etc/GMT-7", "Indian/Christmas" ] } 中的方法时,请务必致电super.onRequestPermissionsResult(...)

也就是说,解决此问题的另一种方法是手动通知您活动中的Activity

Fragment

..如果发送的@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); final List<Fragment> fragments = getSupportFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { fragment.onRequestPermissionsResult(requestCode, permissions, grantResults); } } } 是他们的,请让您的片段做出相应的操作。