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

onRequestPermissionsResult从不在片段[duplicate]中调用

缪英锐
2023-03-14

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

从不调用OnRequestPermissionsResult

public class MyFragment extends Fragment {

final int REQUEST_CODE = 120;

@Override
public View onCreateView(LayoutInflater infl, ViewGroup cont, Bundle bundle) {

    if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
        Log.i("LOG", "Asking for permission right now..");

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


        //This is working but needs API level 23 (Android 6.0) - How to make this work on Android 5.0?
        //requestPermissions( new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CODE);
    }

    return super.onCreateView(infl, cont, bundle);
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

    Log.i("LOG", "onRequestPermissionsResult!");

    if (requestCode == REQUEST_CODE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Log.i("LOG", "GRANTED");
            Toast.makeText(getActivity(), "GRANTED,", Toast.LENGTH_LONG).show();

        } else {
            Log.i("LOG", "REFUSED");
            Toast.makeText(getActivity(), "REFUSED,", Toast.LENGTH_LONG).show();
        }
    }
}
}

共有1个答案

阳昊
2023-03-14

在宿主活动的onRequestPermissionResult内部调用Fragment.onRequestPermissionResult。

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

  • 在我的非活动类中,我请求了一个Fine location权限,但回调onRequestPermissionsResult“永远不会被调用”。现在我看到了一些与此相关的问题,但他们都认为请求是从活动或片段发出的,没有人考虑从非活动类发出请求。这是我的代码 这是onRequestPermissionResultCallback方法的实现 解决了:正如一些人提到的“activity”的onRequest

  • 我有一个片段,其中我有RecolyerView和使用RecolyerView适配器在这个RecolyerView中设置数据。 现在,我在适配器的列表项中有一个按钮,单击该按钮,我需要检查android中的READ_EXTERNAL_STORAGE权限,以获取android中的新权限模型。 我在这个适配器的片段中创建了一个新函数来检查权限是否被授予,如果还没有授予,则请求权限。 我已经使用下面的代码

  • 在我活动页面之一的片段中,我希望从用户处获得权限,并在授予权限后执行一些操作,但不起作用,且在授予权限后看不到任何日志

  • 嗨,我在主片段内使用带有碎片网的viewPager。我试图从画廊或相机中获取图像到位图,但在选择照片并启动ActivityForResult后,它不会在onActivityResult中捕获... 以下是我如何调用startActivityForResult: 这是我的onActivityResult: 有什么想法吗?

  • 然后权限委托类处理权限逻辑: 这段代码工作得非常好,直到我强制流程死亡(我在开发人员工具中选择了Don't keep activities复选框)。之后,我从后台返回,权限对话框仍然存在(因为onCreate再次被触发,权限检查再次被执行)。 问题是,在我按下permission对话框中的任何按钮后,onRequestPermissionsResult方法不会在片段中被触发。我查看了logcat,