In Android 6.0, è necessario chiedere esplicitamente all'utente di concedere le autorizzazioni. Solo dichiararlo nel manifest non è abbastanza.
Questo documento article è un ottimo punto di partenza per l'apprendimento del nuovo modello, ma fornirò un breve sommario.
Ogni volta che si esegue un'azione che richiede un "permesso pericoloso", è necessario verificare se l'autorizzazione è attualmente concessa, poiché l'utente può revocarla in qualsiasi momento.
Questo può essere fatto con il metodo checkSelfPermission
.
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
// We do not have this permission. Let's ask the user
}
è possibile richiedere il permesso con il metodo requestPermissions
, come tale
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_READ_STATE);
Dove PERMISSION_READ_STATE
è una costante intera definito da voi per il check-in al metodo di callback tardi.
Esegui l'override di onRequestPermissionsResult
nella tua attività e verifica se l'autorizzazione è stata concessa. Se lo fosse, puoi andare avanti e preformare l'azione pericolosa.
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_READ_STATE: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission granted!
// you may now do the action that requires this permission
} else {
// permission denied
}
return;
}
}
}
fonte
2016-02-10 15:55:17
https://stackoverflow.com/questions/32635704/cant-get-the-permission – CommonsWare
dispiace Sir ho ri-chiedo di nuovo, e grazie per la risposta –