每次使用不同的请求代码调用 onRequestPermissionsResult

onRequestPermissionsResult called with a different request code each time

我使用此代码在片段中请求许可

requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE},14);

在我的 HomeActivity 中,我使用此代码获得结果

@Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        Log.i("permission", "Request Code: "+ requestCode);}

例如,如果我将代码设置为 14,我将在 onRequestPermissionsResult 上获得请求代码 65550。如果我拒绝许可请求而不是再次请求它,我会得到一个不同的请求代码。这是使用相同的 requestPermissions 和代码 14

调用的 5 onRequestPermissionsResult 的输出
Request Code: 65550
Request Code: 131086
Request Code: 196622
Request Code: 262158
Request Code: 327694

您的 activity 不知道哪个片段在调用 startActivityForResult

因此,如果您从片段中调用 startActivityForResult(intent, 1),则需要将其替换为 getActivity().startActivityForResult(intent, 1)

它很可能会解决您的问题

希望对您有所帮助。