J'essaie de demander l'autorisation READ_PHONE_STATE pour android M mais cela fonctionne dans les activités et quand je l'implémente dans le fragment il ne montre pas la boîte de dialogue. Voici le code.Android M permission dialogue n'apparaît pas dans le fragment
if (preference.getToken() == null) {
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
requestReadPhoneStatePermission();
} else {
TelephonyManager tm = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
HashMap<String, String> params = new HashMap<String, String>();
params.put("appCode", Constants.TRACKING_ID);
params.put("phone", tm.getDeviceId());
DeviceUserService.getDeviceUser(params, getContext());
bookmark();
}
Voici la méthode requestReadPhoneStatePermission
public void requestReadPhoneStatePermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_PHONE_STATE)) {
} else {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE);
}
}
Et voici le code sur onRequestPermissionsResult.
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case READ_PHONE_STATE:
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getContext(), "granted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getContext(), "permission not granted", Toast.LENGTH_LONG).show();
}
return;
}
}
Qu'est-ce qui me manque? Merci d'avance.
Veuillez, Pouvez-vous poster la complète la réponse ici, donc il peut me aider? –