2017-09-24 3 views
0

Ich versuche den Standort auf meinem Gerät zu aktivieren, indem ich das Popup in meinem Gerät benutze, ohne auf die Einstellungsseite zu gehen; Ich habe mehrere Lösungen für einen Stack-Überlauf ausprobiert, aber keiner scheint zu funktionieren, wenn ich meinen Emulator oder Gerätestandort eingeschaltet habe.
Mein Standortcode ist wie folgt:Position des Emulators

OnRequest:

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull 
String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ 

     if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

      permission. its an array becayse it can be multiple permissions 


      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0 , 0, locationListener); 
     } 


    } 


} 

Main:

locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 


    locationListener = new LocationListener() { 
     @Override 
     public void onLocationChanged(Location location) { 

      Log.i("location",""+location.toString()); 
     } 

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

     } 

     @Override 
     public void onProviderEnabled(String provider) { 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 

     } 
    }; 
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION} ,1); 


}else{ 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0 , 0, locationListener); 

} 

Manifest:

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

Bauen Gradle:

compile 'com.android.support:support-v4:25.0.0' 
compile 'com.google.android.gms:play-services-maps:10.2.4' 
compile 'com.google.android.gms:play-services-location:10.2.4' 

Antwort

0

In Ihrer Hauptklasse ändern diese:

if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION} ,1); 
return; 
}else{ 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0 , 0, locationListener); 
} 
+0

Hey Ich habe versucht, diesen Code zu ersetzen, noch die Lage nicht in wird meine Codes eingeschaltet. Wenn du dein Studio und deinen Emulator benutzen würdest, würdest du das einschalten, auf deiner Seite? –

+0

Sie können den aktuellen Standort nicht über GPS in einem Emulator abrufen. Führen Sie die Anwendung in einem Gerät aus, um sicherzustellen, dass es funktioniert. –

+0

ah ja, ich habe versucht, beide immer noch die gleichen Ergebnisse unfähig für sie programmatisch einschalten –

0

1) Entfernen Sie den Code bezogenen Zeit Erlaubnis laufen und versuchen, die App auf einem Gerät läuft jede Android-Version vor Eibisch freigegeben hat. Auf diese Weise erhalten Sie wissen, ob das das Problem mit der Laufzeit Erlaubnis verwandt ist oder nicht

2) Sie können diese Bibliothek versuchen, Laufzeit-Berechtigungen zu implementieren. Es ist sehr einfach und einfach zu bedienen. https://github.com/Karumi/Dexter

Verwandte Themen