Maison > Java > javaDidacticiel > Pourquoi suis-je incapable d'obtenir ma position actuelle à l'aide du fournisseur RÉSEAU d'Android ?

Pourquoi suis-je incapable d'obtenir ma position actuelle à l'aide du fournisseur RÉSEAU d'Android ?

DDD
Libérer: 2024-11-25 16:31:14
original
279 Les gens l'ont consulté

Why Am I Unable to Get My Current Location Using Android's NETWORK Provider?

Comment obtenir la position actuelle dans Android

Vous rencontrez des difficultés pour récupérer les coordonnées de votre position actuelle à l'aide du fournisseur RÉSEAU du système de localisation Android. Malgré la mise en œuvre de diverses classes existantes, vous ne parvenez toujours pas à obtenir les coordonnées actuelles.

Analyse du problème :

Le problème réside peut-être dans un concept fondamental qui vous manque. Voici quelques problèmes potentiels :

  • Autorisations de localisation : Assurez-vous d'avoir déclaré les autorisations de localisation nécessaires dans votre fichier AndroidManifest.xml. Vous aurez besoin des autorisations ACCESS_FINE_LOCATION et ACCESS_COARSE_LOCATION.
  • Fournisseur de localisation : Vérifiez que vous demandez correctement des mises à jour au fournisseur NETWORK. Le code doit explicitement demander des mises à jour de localisation à l'aide de LocationManager.NETWORK_PROVIDER.
  • LocationListener : L'implémentation de l'interface LocationListener et le remplacement de la méthode onLocationChanged sont essentiels pour gérer les mises à jour de localisation.

Code révisé :

Voici une version révisée de votre code qui résout les problèmes potentiels :

MainActivity.java :

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_FINE_LOCATION = 123;
    private LocationManager locationManager;
    private TextView text;

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

        text = (TextView) findViewById(R.id.texts);

        // Check and request location permission
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_FINE_LOCATION);
        } else {
            initLocationManager();
        }
    }

    private void initLocationManager() {
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        // Request location updates from the NETWORK provider
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    }

    private LocationListener locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {
                text.setText("Lat: " + location.getLatitude() + ", Lon: " + location.getLongitude());
            }
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onProviderDisabled(String provider) {
        }
    };

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == REQUEST_FINE_LOCATION && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            initLocationManager();
        }
    }
}
Copier après la connexion

AndroidManifest.xml :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.locationtests">

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>
Copier après la connexion

Ce code mis à jour résout les problèmes les plus courants liés à l'obtention de la position actuelle sur Android à l'aide du fournisseur NETWORK.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal