2015-11-18 8 views
13

Ich versuche auf ACCESS_FINE_LOCATION zugreifen und wenn es nicht gefunden werden kann Zugriff ACCESS_COARSE_LOCATION. Also bitte ich um diese 2 Erlaubnis, aber sie geben mir den gleichen Dialog und fragen nach einer Standortgenehmigung. Ich weiß, dass diejenigen, beide in der gleichen Gruppe sind aber Google sagt:Marshmallow FINE und COARSE Standorterlaubnis

Hinweis: Ihre App muss noch explizit anfordern jede Erlaubnis braucht, auch wenn der Benutzer bereits eine andere Berechtigung in der gleichen Gruppe gewährt hat. Darüber hinaus kann sich die Gruppierung von Berechtigungen in Gruppen in zukünftigen Android-Versionen ändern. Ihr Code sollte nicht auf der Annahme beruhen, dass bestimmte Berechtigungen sich in derselben Gruppe befinden oder nicht.

Dies bedeutet, dass ich für diese 2 Berechtigungen innerhalb einer Sekunde, die in 2 Dialog hintereinander ergibt. Das scheint mir nicht sehr benutzerfreundlich zu sein. Gibt es einen besseren Weg?

+1

Ich frage mich derzeit das gleiche. Enthält ACCESS_FINE_LOCATION nicht die ACCESS_COARSE_LOCATION? Zum Beispiel, wenn Sie einen guten Standort haben, sollten Sie in der Lage sein, ungefähre Position vielleicht zu bekommen? – Nikola

+0

verwenden Sie den Netzwerkanbieter, um den Standort zu ermitteln oder nur GPS zu verwenden? – Rajesh

+0

Versuchen Sie es, es kann Arbeit sein http://StackOverflow.com/a/41221852/5488468 –

Antwort

24

Sie benötigen keine ACCESS_COARSE_LOCATION Erlaubnis, wenn Sie ACCESS_FINE_LOCATION Erlaubnis definieren.

Von Android Dokumentation:

Anfordern von Benutzerberechtigungen

Um Standortaktualisierungen von NETWORK_PROVIDER oder erhalten GPS_PROVIDER zu können, müssen Benutzer die Erlaubnis beantragen, indem er erklärt, entweder die ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION Berechtigung, bzw. in Ihrer Android-Manifestdatei. Zum Beispiel:

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

Ohne diese Berechtigungen, wird Ihre Anwendung zur Laufzeit fehlschlagen, wenn Standortaktualisierungen anfordert.

Hinweis: Wenn Sie sowohl NETWORK_PROVIDER und GPS_PROVIDER verwenden, dann Sie nur die ACCESS_FINE_LOCATION Erlaubnis beantragen müssen, weil es die Erlaubnis für beide Anbieter umfasst. (Genehmigung ACCESS_COARSE_LOCATION enthält nur die Erlaubnis für NETWORK_PROVIDER.)

Bitte schauen Sie auf https://developer.android.com/guide/topics/location/strategies.html

0

ich den gleichen problem.Try gelöst habe, um sich die Erlaubnis Laufzeit und prüfen Sie zunächst das Manifest SDK-Version und wenn Ihre Version ist größer als 6,0 oder gleich 6,0 dann müssen Sie die Berechtigungen für Ihre Erlaubnis prüfen und die Erlaubnis Fine Position nur in Anfrage Ort dann definitiv wird es funktionieren.

Wenn Sie in Code stecken, dann können Sie Code anfordern Ich werde Sie aktualisieren, aber zuerst gehen Sie durch diese Schritte. Wenn Sie Erfolg haben, um Ihre Aufgabe zu erfüllen, bewerten Sie sie.