gpt4 book ai didi

java - 对话 fragment 中未调用 onRequestPermissionsResult

转载 作者:IT王子 更新时间:2023-10-28 23:40:07 28 4
gpt4 key购买 nike

我已经开始着手处理 Android M 运行时权限。在这里,我面临的问题是,如果从 Dialog Fragment 类调用 requestPermissionsonRequestPermissionsResult 不会在同一个 Dialog fragment< 中被调用类。但是如果 requestPermissions 是从 Activity 类或 Fragment 类调用的,那么 onRequestPermissionsResult 方法会在同一个类中被调用。

这是我的示例代码:

public class ContactPickerDialog extends DialogFragment {
private static final int READ_CONTACTS_REQUEST_CODE = 12;
private Context mContext;

private void loadContact() {
if(hasPermission(mContext, Manifest.permission.READ_CONTACTS)){
new ContactSyncTask().execute();
} else {
this.requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, READ_CONTACTS_REQUEST_CODE);
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
Logger.d("TAG", "dialog onRequestPermissionsResult");
switch (requestCode) {
case READ_CONTACTS_REQUEST_CODE:
// Check Permissions Granted or not
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
new ContactSyncTask().execute();
} else {
// Permission Denied
Toast.makeText(getActivity(), "Read contact permission is denied", Toast.LENGTH_SHORT).show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

private static boolean hasPermission(Context context, String permission){
return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}

}

在代码中,我正在调用 Dialog Fragment 类的 requestPermissions 方法。所以我希望在同一个类(class)中获得结果。

感谢任何帮助。提前致谢!


编辑:在这里我添加更多细节,以便对其他人更有帮助。以前我使用 getChildFragmentManager() 来显示 DialogFragment。

ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getChildFragmentManager(), "Contact Picker");

但由于 @CommonWare 要求我使用 Activity 来显示 DialogFragment。我进行了以下更改,并且可以正常工作。

ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getActivity().getSupportFragmentManager(), "Contact Picker");

最佳答案

如果您在支持库中的 Fragment 中,请调用 requestPermissions()直接,以及您的 Fragment 的 onRequestPermissionsResult()将被回调。

如果您调用 ActivityCompat.requestPermissions() ,那么就是ActivityonRequestPermissionsResult()这将被回调。

关于java - 对话 fragment 中未调用 onRequestPermissionsResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33169455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com