onRequestPermissionsResult не вызывается во фрагменте диалога
Я начал работать на Android M разрешение времени выполнения. Здесь я сталкиваюсь с вопросом, что еслиrequestPermissions
вызывается изDialog Fragment
класс тогдаonRequestPermissionsResult
не получить вызов в том же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;
}
}
Здесь в коде я звонюrequestPermissions
методDialog Fragment
учебный класс. Так что я ожидаю получить результат в том же классе.
Любая помощь приветствуется. Заранее спасибо!
РЕДАКТИРОВАТЬ: Здесь я добавляю больше деталей, чтобы они были более полезными для других. Ранее я использовал getChildFragmentManager (), чтобы показать DialogFragment.
ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getChildFragmentManager(), "Contact Picker");
Но, как@CommonWare попросил меня использовать активность, чтобы показать DialogFragment. Я сделал следующие изменения, и это работает.
ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getActivity().getSupportFragmentManager(), "Contact Picker");