当前位置: 首页 > 知识库问答 >
问题:

未在片段中调用onRequestPermissionsResult

壤驷高旻
2023-03-14

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

现在,我在适配器的列表项中单击了一个按钮,我需要检查android中的READ\u EXTERNAL\u STORAGE权限,以查看android中的新权限模型。

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

我已经通过了我的片段。这将作为适配器中的参数,并在适配器中单击按钮调用片段的方法。

我已使用以下代码在片段中调用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 {}

但不会调用它,而是调用此活动的onRequestPermissionsResult方法。

我在这里做错了什么,如果有人知道的话,请帮助我。

共有1个答案

严景焕
2023-03-14

这是一个bug: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);
}

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

 类似资料:
  • 问题内容: 我知道有人问过这个问题,但是我遵循了所有答案,但仍然有同样的问题。我有两个脚本,一个是片段管理器(IngredientsActivity),另一个是片段(OtherList)。代码如下 成分活动 其他清单 我发现有多个建议可以覆盖onSaveInstanceState的建议,并且我发现更多建议告诉我使用setRetainInstance。我不知道如果要保存列表的值,为什么setReta

  • 我有一个应用程序,得到了一个活动与2个碎片水平放置。 在我的活动中,我使用膨胀菜单,使用它我可以显示actionbar选项菜单。但是,当我试图从其中一个片段更新操作栏菜单项时,没有调用。因此,我无法更新操作栏选项菜单。

  • P.P.S@Philipp Jahoda,我实现了onCreateOptionsMenu(...)在片段的托管活动中。

  • 我正在使用开发一个应用程序。 这是我的活动: 我使用的FragmentStatePagerAdapter如下所示: }

  • 假设有两个Fragments,X和Y。我在X上添加Y片段。当Y完成它的工作,然后删除,X再次可见。 问题:当Y片段被删除并且X再次可见时,我必须执行一些任务,但不会调用,因为它取决于活动。那么我怎么知道片段是可见的呢?

  • 尝试在和中捕获它,如 并且我在中有。