Maison > Java > javaDidacticiel > Comment demander des autorisations de localisation lors de l'exécution sous Android ?

Comment demander des autorisations de localisation lors de l'exécution sous Android ?

Barbara Streisand
Libérer: 2024-12-08 04:17:10
original
367 Les gens l'ont consulté

How to Request Location Permissions at Runtime in Android?

Demande d'autorisations de localisation au moment de l'exécution

Le problème auquel vous êtes confronté est que vous devez demander explicitement des autorisations pour accéder à la localisation. Suivez ces étapes pour résoudre le problème :

  1. Vérifiez les autorisations : Utilisez ActivityCompat.checkSelfPermission() pour déterminer si l'application dispose des autorisations nécessaires.
  2. Demander des autorisations : Si les autorisations ne sont pas accordées, utilisez ActivityCompat.requestPermissions() pour demander à l'utilisateur de autorisation.
  3. Gérer la réponse de l'utilisateur : Remplacez onRequestPermissionsResult() pour gérer la réponse de l'utilisateur. Si l'autorisation est accordée, effectuez la tâche liée à la localisation.

Voici une version mise à jour de votre code qui intègre la logique de demande d'autorisation :

public class MainActivity extends AppCompatActivity implements LocationListener {

    private static final int REQUEST_LOCATION_PERMISSION = 10;

    // ... Other code ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
            return;
        }

        // Perform location-related task if permission is granted
        // ...
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case REQUEST_LOCATION_PERMISSION: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // Permission granted, perform location-related task
                    // ...
                } else {
                    // Permission denied
                }
            }
        }
    }

    // ... Other methods ...
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal