W Androidzie 6.0, trzeba wyraźnie zwrócić się do użytkownika, aby przyznać uprawnienia. Samo zadeklarowanie go w manifeście nie wystarczy.
Ten dokument jest świetnym miejscem do nauki nowego modelu, ale podam krótkie podsumowanie.
Za każdym razem, gdy wykonujesz czynność wymagającą "niebezpiecznego pozwolenia", musisz sprawdzić, czy uprawnienie zostało w danej chwili przyznane, ponieważ użytkownik może je odwołać w dowolnym momencie.
Można to zrobić za pomocą metody checkSelfPermission
.
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
// We do not have this permission. Let's ask the user
}
Można zwrócić się o pozwolenie z metodą requestPermissions
jako taki
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_READ_STATE);
Gdzie PERMISSION_READ_STATE
jest stałą liczbą całkowitą zdefiniowane przez użytkownika w celu sprawdzenia metody wywołania zwrotnego później.
Wówczas będziesz nadpisywać numer onRequestPermissionsResult
w swojej działalności i sprawdzać, czy pozwolenie zostało przyznane. Jeśli tak, możesz wykonać niebezpieczną akcję.
@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;
}
}
}
https://stackoverflow.com/questions/32635704/cant-get-the-permission – CommonsWare
Niestety Sir I znowu ponownie zapytać, i dzięki za odpowiedź –