2013-05-07 10 views
23

Die Android-Dokumentation enthält die folgende Beschreibung der Befehle adb grant und adb revoke.Wie verwende ich adb grant oder adb revoke?

grant <PACKAGE_PERMISSION> 

Erteilen Sie Berechtigungen für Anwendungen. Nur optionale Berechtigungen, die die Anwendung deklariert hat, können gewährt werden.

revoke <PACKAGE_PERMISSION> 

Berechtigungen für Anwendungen widerrufen. Nur optionale Berechtigungen, die die Anwendung deklariert hat, können widerrufen werden.

Kann jemand bitte ein Beispiel für die richtige Syntax geben, um sie zu verwenden?

Ich nehme an, das wäre eine Erlaubnis wie android.permission.WRITE_EXTERNAL_STORAGE oder vielleicht nur WRITE_EXTERNAL_STORAGE. Nun, ich habe diese und einige andere versucht und ich kann es nicht zur Arbeit bringen.

Ich habe auch versucht (vergeblich) mehrere Kombinationen von Paket und die Erlaubnis, die mehr Sinn für mich macht (das klingt wie ein Befehl, der eine Berechtigung für ein Paket ändern würde, nicht alle)

Antwort

34

So in Lollipop ich glaube, Sie brauchen „adb shell“ zu tun, zuerst dann, was Sie versucht haben, sollte funktionieren:

adb shell pm grant com.name.app android.permission.READ_PROFILE 

Dieses soll auf Android M ändern, und Sie sollten nur in der Lage zu nutzen:

adb shell pm revoke com.name.app android.permission.READ_PROFILE 

Eine vollständige Liste der Berechtigungen kann here gefunden werden. Wenn Sie android build tools eingerichtet haben, können Sie sehen, welche Berechtigungen die App verwendet. Erster Einsatz

adb shell pm list packages -f 

Kopieren Sie dann das Paket an Sie Computer:

adb pull /path/to/package/from/previous/step.apk 

Dann Berechtigungen erhalten:

aapt d permissions path/to/app/on/computer.apk 
+1

Wie kommt PACKAGE_USAGE_STATS kann nicht auf diese Weise gewährt werden? Gibt es eine Alternative? –

2

Also hier ist ein wenig Kommandozeile (Mac/Linux) Ihre App zu gewähren alle erforderlichen Berechtigungen über die Befehlszeile.

aapt d permissions ./path/to/your.apk \ 
    | sed -n \ 
    -e "s/'//g" \ 
    -e "/^uses-permission: name=android.permission\./s/^[^=]*=//p" \ 
    | xargs -n 1 adb shell pm grant com.your.package 
5

Wenn Sie nicht den Namen Erlaubnis oder wollen passieren wissen, alle Berechtigungen löschen können Sie verwenden

adb shell pm reset-permissions your.package.name 
+3

** Seien Sie vorsichtig mit diesem Befehl, da er alle Ihre Systemberechtigungen zurückgesetzt hat. ** pm reset-permissions ist parameterlos. Ihr.paketname ist nicht wichtig. –