onRequestPermissionsResult未在片段中调用

时间:2016-03-14 09:40:09

标签: android android-recyclerview android-6.0-marshmallow

我有一个片段,我在其中使用recyclerview适配器在recyclerview中使用recyclerview和设置数据。

现在,我在适配器的列表项中点击了一个按钮,我需要在android中检查android中的新权限模型的READ_EXTERNAL_STORAGE权限。

我在此适配器的片段中创建了一个新函数,以检查是否授予了权限,如果尚未授予权限,则请求权限。

我已将MyFragment.this作为适配器中的参数传递,并在适配器上单击按钮时调用片段的方法。

我使用下面的代码在片段中调用requestPermission。

if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED)){
       requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                ConstantVariables.READ_EXTERNAL_STORAGE);
    }

我已使用以下代码覆盖了片段中的onRequestPermissionsResult方法:

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case ConstantVariables.READ_EXTERNAL_STORAGE:
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, proceed to the normal flow.
                startImageUploading();
            } else {}

但它没有被调用,而是调用了这个Activity的onRequestPermissionsResult方法。

我在这里做错了,如果有人在这里有想法,请帮助我。

1 个答案:

答案 0 :(得分:0)

这是一个错误: https://code.google.com/p/android/issues/detail?id=189121

您需要使用Android支持库23.3。+。 之后不要忘记添加

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

关于未在活动中调用的活动(if super.onRequestPermissionsResult(requestCode, permissions, grantResults),片段将不会收到onRequestPermissionsResult)