Below code is working fine in Activity but I cannot make it work inside a Fragment.
The onRequestPermissionsResult
is never gets called.
There is a requestPermissions
function in API level 23 (Android 6.0) but I need to make it work on lower levels like API level 21 (Android 5.0) so unfortunetely I cannot use that. ActivityCompat.requestPermissions
just simply not calls onRequestPermissionsResult
.
Any suggestion?
public class MyFragment extends Fragment {
final int REQUEST_CODE = 120;
@Override
public View onCreateView(LayoutInflater infl, ViewGroup cont, Bundle bundle) {
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
Log.i("LOG", "Asking for permission right now..");
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CODE);
//This is working but needs API level 23 (Android 6.0) - How to make this work on Android 5.0?
//requestPermissions( new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CODE);
}
return super.onCreateView(infl, cont, bundle);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
Log.i("LOG", "onRequestPermissionsResult!");
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i("LOG", "GRANTED");
Toast.makeText(getActivity(), "GRANTED,", Toast.LENGTH_LONG).show();
} else {
Log.i("LOG", "REFUSED");
Toast.makeText(getActivity(), "REFUSED,", Toast.LENGTH_LONG).show();
}
}
}
}