2016-03-28 7 views
0

In Bezug auf Marshmallow, wie kann ich sagen, welche Betriebssystemaufrufe in Android eine Berechtigungsprüfung erfordern? Bei einigen Standortmanager-Aufrufen zeigt der Compiler einen Fehler an, wenn ich die Berechtigungen vor dem Aufruf nicht überprüfe. Es gibt jedoch viele andere Betriebssystemaufrufe, für die Berechtigungen erforderlich sind, die jedoch keinen Compilerfehler generieren, wenn die Berechtigung vor dem Aufruf nicht überprüft wird.Laufzeit Berechtigungsprüfung in Android Marshmallow

Zum Beispiel habe ich einen Aufruf der Methode sendExtraCommand des Location Managers in einer meiner Apps. Der Compiler gibt keinen Hinweis darauf, dass eine Berechtigungsprüfung vor dem Aufruf erforderlich ist, also hatte ich keinen. Wenn ich den Mauszeiger über den Anruf in Android Studio drücke, geben die Informationen im Dokumentationsfenster keinen Hinweis darauf, dass für den Anruf Berechtigungen erforderlich sind. Aber als Marshmallow-Nutzer mit meiner App anfingen, erhielten sie Sicherheitsausnahmen.

Ist es nur ich, oder ist die Marshmallow-Sicherheits-Sache extrem schlecht durchdacht?

Es gibt eine ähnliche Frage hier, aber es hat keine guten Antworten, so habe ich diese in der Hoffnung geschaffen, dass das Thema mehr Aufmerksamkeit zu bekommen: How to find required Android Marshmallow runtime permissions in code?

+0

Überprüfen Sie diesen Link: [http://stackoverflow.com/questions/39717592/marshmallow-permission/41442938#41442938][1] –

Antwort

1

wie kann ich sagen, Welches Betriebssystem fordert in Android eine Berechtigungsprüfung an?

Wie Sie bemerken, können Sie in einigen Fällen Fusselwarnungen und ähnliches erhalten. Man geht davon aus, dass sich dies mit der Zeit verbessern wird.

In anderen Fällen lesen Sie die JavaDocs, wobei die Klasse oder Methode angibt, dass Sie eine Berechtigung benötigen. Wenn Sie das Element <uses-permission> zu Ihrem Manifest hinzufügen, denken Sie darüber nach, ob es sich um einen von the dangerous permissions that requires handling at runtime handelt.

Darüber hinaus finden Sie heraus, wenn Sie Ihre App testen und Ihre Tests fehlschlagen.

Wenn diese nicht ausreichen, stellen Sie targetSdkVersion auf 22 oder niedriger ein, bis Sie mit der Runtime Permission-Unterstützung von Android vertraut sind.

+0

Vielen Dank für die sehr gute Antwort. Ich habe im Moment kein Marshmallow-Gerät, also muss ich deinen letzten Vorschlag vorerst verwenden. –

+0

Interessante Randnotiz: Ich merke, dass ich eine Internet-Erlaubnis beantragen muss, um eine Admob-Anzeige zu laden. Es ist mir nicht wirklich klar, wie ich mit Anzeigen auf Marshmallow und darüber jemals Geld verdienen kann, denn niemand wird die Erlaubnis erteilen, Anzeigen zu laden und zu zeigen. –

+0

@ChrisB: 'INTERNET' ist keine' gefährliche' Erlaubnis. Sie müssen den Benutzer nicht dazu auffordern; AFAIK, Sie können * den Benutzer nicht dazu auffordern. – CommonsWare

Verwandte Themen