我有一个片段,其中我有 recyclerview 并使用 recyclerview 适配器在这个 recyclerview 中设置数据。
现在,我在适配器的列表项中点击了一个按钮,我需要在 android 中检查 READ_EXTERNAL_STORAGE 权限以获取 android 中的新权限模型。
我在这个适配器的片段中创建了一个新函数来检查是否授予权限,如果尚未授予权限,则请求权限。
我已将 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使用以下代码覆盖了片段中的方法:
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 方法被调用。
我也在片段的父活动中定义了相同的 onRequestPermissionsResult 方法,并且它被调用了。
我无法删除活动的 onRequestPermissionsResult 方法,但想在我向片段请求权限时调用片段的 onRequestPermissionsResult 方法。我怎样才能做到这一点?我在这里做错了什么,如果有人在这里有想法,请帮助我。
编辑答案以涵盖更广泛的问题
我认为您混淆了片段和活动的方法。上个月我的项目遇到了类似的问题。请检查您是否最终有以下内容:
super.onRequestPermissionsResult
看看有没有帮助。