So ermitteln Sie den aktuellen Standort in Android
Sie haben Probleme beim Abrufen Ihrer aktuellen Positionskoordinaten über den NETZWERK-Anbieter des Android-Standortsystems. Trotz der Implementierung verschiedener vorhandener Klassen können Sie die aktuellen Koordinaten immer noch nicht abrufen.
Problemanalyse:
Das Problem liegt möglicherweise in einem grundlegenden Konzept, das Ihnen fehlt. Hier sind einige mögliche Probleme:
Überarbeiteter Code:
Hier ist ein überarbeitete Version Ihres Codes, die die potenziellen Probleme behebt:
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>
Dieser aktualisierte Code behebt die häufigsten Probleme im Zusammenhang mit der Ermittlung des aktuellen Standorts in Android über den NETZWERK-Anbieter.
Das obige ist der detaillierte Inhalt vonWarum kann ich meinen aktuellen Standort nicht über den Netzwerkanbieter von Android ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!