2017-12-14 5 views
0

Ich möchte setMyLocationEnabled (true) verwenden. Kann jedoch aufgrund von Berechtigungsproblemen nicht verwendet werden.Immer noch fehlgeschlagen ACCESS_FINE_LOCATION Erlaubnis ohne um Erlaubnis zu fragen

Meine Android-Anwendung fragt nicht um Erlaubnis für ACCESS_FINE_LOCATION und ACCESS_COARSE_LOCATION. Ohne um Erlaubnis zu fragen, ist es immer versäumt, die Erlaubnis zu erhalten.

Android Version der Geräteprüfung: 6.0.1
Compile SDK Version und Ziel SDK: API-25, Android 7.1.1
Tool Version Körperbau: 25.0.3
Min SDK Version: API-22, Android 5.1

Folgende Berechtigungen werden in AndroidManifest.xml hinzugefügt

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="com.google.android.providers.gsf.permisson.READ_GSERVICES"/> 
<uses-permission android:name="edu.bloomu.huskies.tsc71523.skatelogger.MAPS_RECEIVE"/> 

MapsActivity.java:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

} 
@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    LatLng sydney = new LatLng(0, 0); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("TestLocation")); 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
     Log.e("LOCATION", "ACCESS_FINE_LOCATION-------Successful"); 
     mMap.setMyLocationEnabled(true); 
    } 
    else { 
     Log.e("LOCATION", "ACCESS_FINE_LOCATION-------Failed"); 
    } 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
     Log.e("LOCATION", "ACCESS_COARSE_LOCATION-------Successful"); 
     mMap.setMyLocationEnabled(true); 
    } 
    else{ 
     Log.e("LOCATION", "ACCESS_COARSE_LOCATION-------Failed"); 

    } 
} 
} 
+1

Sie vielleicht die „fragen nicht geprüft Erneut "im Request Permission Dialog markieren, versuche Daten zu löschen. Und Sie verlangen keine Erlaubnis –

+0

Es funktionierte nach der Installation von "Google Play-Dienste". Vielen Dank. – Boka

Antwort

1

Beginnend mit Android Marshmallow (6.0) müssen Sie das neue Berechtigungsmodell verwenden (um Erlaubnis fragen), wenn Ihr Ziel API-Level 23 oder höher ist.

wird dieser Vortrag Ihnen das neue Modell helfen, zu verstehen: https://youtu.be/WGz-alwVh8A

Diese Helfer Bibliothek es auch einfacher und nahtlos ältere Versionen von Android unterstützen nutzen machen können: https://github.com/hiqes/andele

Verwandte Themen