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
Barbara Streisandoriginal
2024-12-08 04:17:10371parcourir

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 ...
}

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!

Déclaration:
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