5

Der PlacePicker ist ein nützliches Widget in com.google.android.gms:play-services-places:9.4.0 hinzugefügt. Hier finden Sie die Beschreibung: PlacePickerWarum benötigt Android PlacePicker (!) Nicht die Berechtigung ACCESS_FINE_LOCATION?

Die Dokumentation besagt eindeutig, dass Sie die Berechtigung ACCESS_FINE_LOCATION benötigen, damit es funktioniert.

Auf Marshmallow und darüber müssen Sie auch den Benutzer bitten, diese Erlaubnis zu erteilen.
Aber es scheint zu funktionieren, ohne dies zu tun!
Meine app tut

  • Schlüssel
  • nicht definieren die Erlaubnis in der AndroidManifest
  • nicht stellen dem Benutzer, eine Karten-API bieten diese Erlaubnis
  • jederzeit

zu gewähren, aber läuft die App auf einem Marshmallow-Gerät startet den PlacePicker und ich kann

  • korrekt einen Ort auswählen (nicht ohne den API-Schlüssel möglich).
  • gehen „Mein Standort“ über die MyLocation-Taste, um (möglichst ohne API-Schlüssel)

jemand dies bestätigen kann, oder eine Erklärung hat, warum das Widget gewährt, ohne die richtigen Berechtigungen funktioniert?

+0

Ich muss auch wissen, warum, und wenn ich nach ACCESS_FINE_LOCATION fragen sollte – pandalion98

Antwort

1

Die Frage ist fast ein Jahr alt, aber ich habe versucht, die gleiche Antwort zu finden, damit es jemand anderem helfen kann.

Dies liegt daran, dass PlacePicker mit "intention based request" arbeitet. Die Dokumentation ist nicht sehr klar damit, aber es heißt

1: Verwenden Sie nur die erforderlichen Berechtigungen für Ihre App zu arbeiten. Abhängig davon, wie Sie die Berechtigungen verwenden, kann es eine andere Möglichkeit geben, das zu tun, was Sie benötigen (Systemabsichten, Kennungen, Hintergrundinformationen für Telefonanrufe), ohne auf den Zugriff auf vertrauliche Informationen angewiesen zu sein. Source

Und einen Hinweis gibt hier:

Wenn Ihre Anforderung für den Zugriff auf Benutzerdaten selten ist - mit anderen Worten, es ist nicht unakzeptabel störend für den Benutzer mit einem Laufzeit Dialog jeder präsentiert werden Zeit, die Sie benötigen, um auf Daten zuzugreifen - Sie können eine absichtsbasierte Anfrage verwenden. Android stellt einige Systemabsichten bereit, die Anwendungen verwenden können, ohne dass Berechtigungen erforderlich sind, da der Benutzer entscheidet, was zum Zeitpunkt der Anforderung der intentionsbasierten Anforderung mit der App geteilt werden soll. Source

Ich habe es herausgefunden Test Berechtigungen Fällen verwenden mit Eibisch und Lollipop-Geräte, das Ergebnis mit PlacePicker vergleichen, die ich dachte, könnte Absicht basierte Berechtigungen mit MediaStore verwenden, der diese Art von Erlaubnis verwenden nach Dokumentation:

Zum Beispiel ein Intent-Aktionstyp von MediaStore.ACTION_IMAGE_CAPTURE oder MediaStore.ACTION_VIDEO_CAPTURE können verwendet werden, um Bilder oder Videos aufzunehmen, ohne das Camera-Objekt direkt zu verwenden (oder die Erlaubnis zu benötigen). In diesem Fall fragt die Systemabsicht jedes Mal, wenn ein Bild erfasst wird, die Zustimmung des Benutzers in Ihrem Namen ab. Zum Beispiel kann ein Vorsatz Aktionstyp von MediaStore.ACTION_IMAGE_CAPTURE oder MediaStore.ACTION_VIDEO_CAPTURE kann Bilder oder Videos verwendet werden, um zu erfassen, ohne die Kamera Objekt direkt (oder erfordern die Berechtigung). In diesem Fall fragt die Systemabsicht jedes Mal, wenn ein Bild erfasst wird, die Zustimmung des Benutzers in Ihrem Namen ab. Source

Verwandte Themen