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 :
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(); } } }
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>
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!