2017-01-12 4 views
1

Ich machte eine App zum Testen verschiedener Telefonfunktionen ohne Benutzerinteraktion, aber es funktionierte nicht auf einigen Geräten, obwohl es vorher gut geklappt hat. Meine Theorie war, dass es runtime Berechtigungen brauchte und ich hatte Recht. Wenn ich die Laufzeitberechtigung in die Aktivität einfüge, funktioniert sie einwandfrei. Das Problem ist, dass es die Berechtigungen vom Benutzer anfordert und ich keine Benutzerinteraktion haben kann. Gibt es eine Möglichkeit, ohne Benutzerinteraktion Berechtigungen für die Aktivität zu erteilen?10 Android-Wie kann ich Laufzeitberechtigungen ohne Benutzerinteraktion gewähren?

Ich werde eine Aktivität einschließen, bei der ich die Rekorderaktivität zum Funktionieren gebracht habe, aber abhängig davon, dass der Benutzer die Erlaubnis erteilt. Bitte helfen Sie !!

+5

** zum Glück ** Sie können nicht – Selvin

+0

Wenn es wäre, es zu gewähren automatisch dann gesamten Prozess der Laufzeit Erlaubnis nichts. Halten Sie Ihr API-Level weniger als 23, um Runtime-Berechtigungen zu vermeiden –

+0

@Selvin scheint wie Sie absichtlich vergessen ** ** zum Glück vergessen: P –

Antwort

4

Wie in den Kommentaren bemerkt, ist dies aus normalen Android-Apps nicht möglich, aus offensichtlichen Sicherheitsgründen.

Häufig schreiben wir zum Testen verschiedener Telefonfunktionen nicht eine App, sondern eine Testsuite, die Instrumentierungstests verwendet. Dort, können Sie UiAutomator verwenden, um das Klicken auf den Erlaubnisdialog zu automatisieren. Dies wird jedoch nur als Teil einer Testsuite von einer Android SDK-Installation ausgeführt.

Alternativ, in Ihrem Fall, setzen Sie Ihre targetSdkVersion unter 23, und Sie müssen nicht mit Laufzeitberechtigungen beschäftigen. Irgendwann wird etwas Ihre Hand zwingen, eine höhere targetSdkVersion als das zu haben, aber Sie könnten in der Lage sein, "die Dose die Straße hinunter zu treten" und sich mit dieser Herausforderung in der Zukunft befassen.

+0

Dies ist die Schlussfolgerung, zu der ich gerade gekommen bin. Zumindest kenne ich das Problem für den Moment. Ich schlug mit meinem Kopf gegen die Wand und versuchte herauszufinden, warum das nicht funktionieren würde, wenn es vorher funktioniert hatte. Jetzt kenne ich das Problem. Danke für die Hilfe. – Toby

0

Leider kann dies nicht getan werden, da dies den Zweck von Berechtigungen negieren würde.

Vielleicht, wenn Sie eine App hatten, die die Erlaubnis-Schaltfläche der Berechtigungsbox physisch antippen könnte, d. Etwas, das andere Apps überlagern und mit dem interagieren kann, was auf dem Bildschirm angezeigt wird. Aber mit so etwas kann ich dir nicht helfen.

2

Dies ist wahrscheinlich nicht das, was Sie wollen, aber ein Benutzer kann technisch Berechtigungen ohne Interaktion mit Ihre App gewähren. In Android 6+ können Benutzer einzelne Berechtigungen über das Telefon Einstellungen -> Apps -> Berechtigungen erteilen und verweigern. Technisch dies gewährt die Erlaubnis, ohne mit der App zu interagieren.

0

Ja, es ist möglich, aber es hat ein paar Einschränkungen.

1) Sie müssen SDK 22 oder niedriger verwenden, wenn Sie SDK über 22 verwenden, als es Sie fragt Laufzeit Berechtigung.

  • gehen Sie zur App Level Gradle und setzen Sie targetSdkVersion 22.

Ich habe versucht, diese Methode funktioniert!

hier Beispielprojekt Link: - https://github.com/kdblue/PermissionGranted

Verwandte Themen