onRequestPermissionsResult no se llama en el fragmento de diálogo
He comenzado a trabajar con el permiso de ejecución de Android M. Aquí estoy enfrentando el problema de que sirequestPermissions
se llama desdeDialog Fragment
clase entoncesonRequestPermissionsResult
no ser llamado de la mismaDialog fragment
clase. Pero sirequestPermissions
se llama desdeActivity
clase oFragment
clase entoncesonRequestPermissionsResult
Se llama al método en la misma clase.
Aquí está mi código de muestra:
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;
}
}
Aquí en el código que estoy llamandorequestPermissions
método deDialog Fragment
clase. Así que espero obtener resultados en la misma clase.
Cualquier ayuda es apreciada. ¡Gracias por adelantado!
EDITAR: Aquí estoy agregando más detalles, para que sea más útil para los demás. Anteriormente he usado getChildFragmentManager () para mostrar el DialogFragment.
ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getChildFragmentManager(), "Contact Picker");
Pero como@CommonWare me pidió que usara actividad para mostrar el DialogFragment. He realizado los siguientes cambios y funciona.
ContactPickerDialog dialog = new ContactPickerDialog();
dialog.show(getActivity().getSupportFragmentManager(), "Contact Picker");