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

onRequestPermissionsResult(如果在片段和活动中同时定义)不在片段中调用

鞠嘉誉
2023-03-14

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

现在,我在适配器的列表项中有一个按钮,单击该按钮,我需要检查android中的READ_EXTERNAL_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方法。

我也在片段的父活动中定义了相同的onRequestPermissionsResult方法,并且正在调用它。

我不能删除活动的onRequestPermissionsResult方法,但希望在向Fragment请求权限时调用Fragment的onRequestPermissionsResult方法。我怎么能这么做?我是不是做错了什么,如果有什么人在这里有想法,请帮助我。

共有1个答案

薛楷
2023-03-14

编辑过的回答涵盖了更广泛的问题

我认为你混淆了碎片和活动的方法。上个月我的项目也有类似的问题。请检查您是否有以下内容:

  1. 在AppCompattivity中使用方法ActivityCompat.RequestPermissions
  2. 在v4支持片段中,应使用RequestPermissions
  3. 如果在片段中调用AppCompattivity.RequestPermissions,则Catch将返回活动而不是片段
  4. 确保从活动的OnRequestPermissionsResult调用Super.OnRequestPermissionsResult
 类似资料:
  • 在我的非活动类中,我请求了一个Fine location权限,但回调onRequestPermissionsResult“永远不会被调用”。现在我看到了一些与此相关的问题,但他们都认为请求是从活动或片段发出的,没有人考虑从非活动类发出请求。这是我的代码 这是onRequestPermissionResultCallback方法的实现 解决了:正如一些人提到的“activity”的onRequest

  • 我有一个片段,其中有recyclerview,并使用recyclerview适配器在这个recyclerview中设置数据。 现在,我在适配器的列表项中单击了一个按钮,我需要检查android中的READ\u EXTERNAL\u STORAGE权限,以查看android中的新权限模型。 我在这个适配器的片段中创建了一个新函数,用于检查是否授予了权限,如果尚未授予权限,则请求权限。 我已经通过了我

  • 下面的代码在活动中运行良好,但我不能使它在片段中工作。 从不调用。

  • 我想在收到一些HTTP请求的响应后,更新几个<code>片段 。-- 活动 适配器 碎片样本 日志显示位置0,1处的片段的<code>updateData</code>工作良好。但是对于位置2处的片段,它会导致错误。 我发现的区别是适配器没有为位置2调用,这意味着没有调用的。因此不存在。 我的直觉告诉我,问题一定来自适配器的工作流或fragmentManager事务。但是作为一个Android初学

  • 有一个调用。调用但从不调用,它是在中编写的。 代码: 代码:

  • 亲活性 这意味着,onActivityResult()将在作为该子片段的父片段的片段内部调用refresh。作为连锁反应,refreshDeliveryFragment()将调用这两个子片段中的一个子片段来刷新它们的recyclerview数据。