2017-08-10 8 views
1

Im Erstellen einer Anwendung, die auf einer Hardware ausgeführt werden sollte, die keine Bildschirme hat. Um die Anwendung auszuführen, benötige ich zwei Berechtigungen: Kamera und Schreiben in den Speicher. Da meine Anwendung keine Benutzeroberflächen hat und das Gerät keine Möglichkeit zum Anzeigen von Benutzeroberflächen bietet, frage ich mich, wie ich Berechtigungen für die Anwendung erteilen kann.Erteilen Sie Berechtigungen programmatisch für einen Android-Dienst

In dieser speziellen Anwendung wissen die Benutzer bereits, dass das Gerät Bilder aufnimmt, wenn der Benutzer eine Taste drückt. Aus Sicht der Benutzer ist es daher nicht erforderlich, explizit Berechtigungen zu erteilen.

Vielen Dank im Voraus.

+0

gibt es keine Möglichkeit für normale Android. Nur für Android-Sachen. –

+0

Überprüfen Sie diese [how-to-Request-Berechtigungen-von-einem-Dienst-in-Android-Marshmallow] (https://stackoverflow.com/questions/32292675/how-to-request-permissions-from-a-service -in-android-Marshmallow) – ELITE

Antwort

0

Es gibt keine Möglichkeit, zur Laufzeit Berechtigungen hinzuzufügen, sie müssen im AndroidManifest explizit sein, da sie bei der Installation dem Android-Benutzer angezeigt werden müssen.

Darf ich vorschlagen, dass Sie einen Blick auf dem folgenden Beitrag: Permission issue while starting a service from android

globaler Zugang zu einem Dienst kann erzwungen werden, wenn es in seinem Manifest Tag deklariert wird. Auf diese Weise müssen andere Anwendungen ein entsprechendes Element in ihrem eigenen Manifest deklarieren, um starten, stoppen, oder an den Dienst binden zu können.

Ab LEBKUCHEN, wenn Context.startService (Intent) verwenden, können Sie auch Intent.FLAG_GRANT_READ_URI_PERMISSION und/oder Intent.FLAG_GRANT_WRITE_URI_PERMISSION auf der Absicht festgelegt. Dies gewährt dem Dienst temporären Zugriff auf die spezifischen URIs in der Absicht. Der Zugriff bleibt bestehen, bis der Service stopSelf (int) für den Startbefehl oder einen späteren Befehl aufgerufen hat oder bis der Service vollständig gestoppt wurde. Dies funktioniert, um Zugriff auf die anderen Apps zu gewähren, die nicht die Berechtigung zum Schutz des Service angefordert haben, oder auch wenn der Service überhaupt nicht exportiert wird.

Zusätzlich kann ein Dienst einzelne IPC-Aufrufe mit Berechtigungen schützen, indem er die checkCallingPermission (String) -Methode aufruft, bevor die Implementierung dieses Aufrufs ausgeführt wird.

Weitere Informationen zu Berechtigungen und Sicherheit im Allgemeinen finden Sie im Dokument Sicherheit und Berechtigungen.

0

Machen Sie eine transparente Aktivität ohne UI (kein XML-Layout) und den Code für Android Marshmallow-Berechtigungen. Wenn die Anwendung ausgeführt wird, rufen Sie diese Aktivität vom Dienst auf, und der Benutzer wird nur dann eine Berechtigung sehen, wenn die Anwendung von überall aus von überall oder von der Hardware ausgelöst wird. Während die App geöffnet ist, ist die transparente Aktivität geöffnet und der Benutzer kann die Berechtigung erteilen.

+0

aber das Problem ist, es gibt keinen Bildschirm auf dem Gerät. Daher kann der Benutzer keine Berechtigungen sehen. – KTB

+0

Ihre Anwendung hat Service nur richtig ... rufen Sie transparente Aktivität von diesem Service starten Sie Ihre App. Bedeutet, wenn die Anwendung etwas auslöst (Dienst starten). Einfach: Schritt 1 Sie können eine transparente Aktivität ohne Benutzeroberfläche und Code für die Erlaubnis, was Sie wollen, richtig machen. Schritt 2. rufen Sie diese Aktivität vom Dienst hat es (Sie können Aktivität aus dem Dienst starten keine Notwendigkeit UI-Bildschirm). Und wenn diese Aktivität rufen nur Erlaubnis Popup zum ersten Mal, wenn App in Gerät eingebettet. –

Verwandte Themen