Attendez l'autorisation de l'utilisateur
J'ai créer une application qui échantillonnage du GPS sur le départ.
Comme vous le savez probablement, les autorisations sont demandées lors de l'exécution à partir d'Android M et au-dessus.
Donc, dans mon cas, je commence par vérifier si des autorisations sont nécessaires, comme ceci:
private void permissionForAndroidM()
{
if (Build.VERSION.SDK_INT > 22) {
String[] allPermissionNeeded = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO};
List<String> permissionNeeded = new ArrayList<>();
for (String permission : allPermissionNeeded)
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED)
permissionNeeded.add(permission);
if (permissionNeeded.size() > 0) {
requestPermissions(permissionNeeded.toArray(new String[0]), 0);
}
}
}
mais Android de continuer l'exécution du code et de poser pour les données GPS ( = crash, car l'utilisateur n'a pas accepté la demande d'autorisation).
- Je trouver de nombreuses solutions à l'idée d'attendre une entrée de l'utilisateur (comme l'utilisation de DialogInterface.OnClickListener
lienmais il ne peut pas mises en œuvre dans ce cas, parce que je ne suis pas de la création de la boîte de dialogue).
Ligne de fond, la question: Comment puis-je attendre de réponse de l'utilisateur à partir de l'Android l'autorisation de dialogue ?
source d'informationauteur AsfK
Vous devez vous connecter pour publier un commentaire.
Vous pouvez gérer la réponse de l'utilisateur méthode de remplacement
de votre activité.
Comme beaucoup de choses dans Android,
requestPermissions()
est asynchrone. L'utilisateur n'a même pas été invité pour les autorisations par le temps, cette méthode retourne.Vous n'avez pas.
Si vous trouvez que vous avez la permission, vous faites votre travail. Si vous trouvez que vous devez demander la permission, vous tardez à faire ce travail jusqu'à ce que vous obtenez la permission, dans
onRequestPermissionsResult()
.J'ai travaillé il le dessous de façon à:
1 - a Créé un
Boolean
de l'aide pour vérifier les autorisations accordées:2 - a Créé un
Splash
écran:3 - Créé le
OnRequestPermissionsResult
comme ci-dessous:4 Définis par la
Splash
écran commeLauncher
dans leAndroidManifest.xml
:5 - Dans la
styles.xml
défini leSplashTheme
:6 - Le
@drawable/Splash.xmls
est:7 - Dans le
values/colors.xmls
lalightgray
couleur a été définie comme ci-dessous: