Ich versuche, den Standort des Benutzers mit Netzwerk sowie GPS zu erhalten. Dies ist, wie mein Flow geht -Force schließen auf Android-Standort Berechtigungen
- Get Location
- Überprüfen Sie, ob Network_Provider
- Wenn diese Option aktiviert aktiviert ist, für Berechtigungen überprüfen, Berechtigungen erwerben und den Standort mit Netzwerk.
- Wenn nicht, suchen Sie nach GPS_Provider, wenn nicht aktiviert, aktivieren GPS aus Einstellungen Aktivität sonst erwerben Berechtigungen und erhalten Sie den Standort mit GPS.
Das Problem - Wenn ich versuche, die Berechtigungen zu beantragen, geht die App in Kraft schließen Modus. Vielleicht frage ich Berechtigungen an der falschen Stelle? Bitte werfen Sie etwas Licht.
Hier ist der Code für die gleiche -
private void getLocationMgr() {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Log.v(TAG, "Network enabled? " + isNetworkEnabled);
if (isNetworkEnabled) {
getLocation(locationManager, LocationManager.NETWORK_PROVIDER);
} else {
boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (isGPSEnabled == false){ // go to GPS settings}
else {
getLocation(locationManager, LocationManager.GPS_PROVIDER);
}
}
}
private void getLocation(final LocationManager locationManager, final String provider) {
// Getting permissions from user for location access
if (ContextCompat.checkSelfPermission(MainActivity.this,
android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERM_FINE_LOCATION);
}
locationManager.requestSingleUpdate(provider, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.v(TAG, "Provider: " + provider);
Log.v(TAG, "Location: " + location.getLatitude() + " " + location.getLongitude());
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
if (addresses.size() > 0) {
Log.v(TAG, "City : " + addresses.get(0).getLocality());
Log.v(TAG, "Country: " + addresses.get(0).getCountryCode());
setCityExecute(addresses.get(0).getLocality(), addresses.get(0).getCountryCode());
} else {
Log.v(TAG, "Unable to get city");
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}, null);
}
Verursacht durch: java.lang.SecurityException: "Netzwerk" Standortanbieter erfordert ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION Erlaubnis. bei android.os.Parcel.readException (Parcel.java:1684) bei android.os.Parcel.readException (Parcel.java:1637) bei android.location.ILocationManager $ Stub $ Proxy.requestLocationUpdates (ILocationManager.java : 614) bei android.location.LocationManager.requestLocationUpdates (LocationManager.java:887) bei android.location.LocationManager.requestSingleUpdate (LocationManager.java:695) bei com.pavanbawdane.weatherinformation.MainActivity.getLocation (MainActivity.java:140) um c om.pavanbawdane.weatherinformation.MainActivity.getLocationMgr (MainActivity.java:99) bei com.pavanbawdane.weatherinformation.MainActivity.onCreate (MainActivity.java:81)
"Wenn ich versuche, die Berechtigungen anzufordern, tritt die App in Kraft Close-Modus" - Verwenden Sie LogCat, um die Java-Stack-Ablaufverfolgung für Ihren Absturz zu untersuchen: https://Stackoverflow.com/questions/23353173/happy -myapp-has-stopped-wie-kann-ich-lösen-das – CommonsWare
Der Absturz ist mit dem Dialogfeld Berechtigungen verknüpft. – Pavan
Das hilft uns nicht viel, da wir Ihre Stapelverfolgung von hier aus nicht sehen können. Dein Monitor ist falsch herum ausgerichtet, und da ist die Krümmung der Erde zu beachten ... :-) Bitte bearbeite die Frage und poste den kompletten Java-Stack-Trace, der mit dem Absturz verbunden ist. – CommonsWare