@Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // ... Some magical things if (ContextCompat.checkSelfPermission(getActivity(), READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { // We have access. Life is good. setupContactsPicker(); } else if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), READ_CONTACTS)) { // We've been denied once before. Explain why we need the permission, then ask again. getActivity().showDialog(DIALOG_PERMISSION_REASON); } else { // We've never asked. Just do it. requestPermissions(new String[]{READ_CONTACTS}, REQUEST_PERMISSION_CONTACTS); } return magicalView; } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_PERMISSION_CONTACTS && grantResults[0] == PackageManager.PERMISSION_GRANTED) { setupContactsPicker(); } else { // We were not granted permission this time, so don't try to show the contact picker super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }