2013-05-07 18 views
23

La documentazione di Android contiene la seguente descrizione dei comandi adb grant e adb revoke.Come utilizzare la concessione adb o la revoca adb?

grant <PACKAGE_PERMISSION> 

Concedere autorizzazioni alle applicazioni. Solo le autorizzazioni opzionali dichiarate dall'applicazione possono essere concesse.

revoke <PACKAGE_PERMISSION> 

Revocare le autorizzazioni per le applicazioni. Solo le autorizzazioni opzionali dichiarate dall'applicazione possono essere revocate.

Qualcuno può dare un esempio della sintassi corretta per usarli?

Suppongo che sarebbe un permesso come android.permission.WRITE_EXTERNAL_STORAGE o forse solo WRITE_EXTERNAL_STORAGE. Beh, ho provato quelli e molti altri e non riesco a farlo funzionare.

Ho anche provato (inutilmente) diverse combinazioni di pacchetto e il permesso, il che rende più senso per me (questo suona come un comando che modificherebbe di autorizzazione per il un unico pacchetto, non tutti)

risposta

34

Quindi, in Lollipop credo che quello che devi fare "adb shell" prima allora che cosa si è tentato dovrebbe funzionare:

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

Questo dovrebbe cambiare su Android M e si dovrebbe essere in grado di utilizzare solo:

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

È possibile trovare un elenco completo delle autorizzazioni here. Se hai impostato android build tools puoi vedere quali autorizzazioni sta utilizzando l'app. Primo utilizzo

adb shell pm list packages -f 

quindi copiare il pacchetto al computer:

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

quindi ottenere permesso:

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

Come mai PACKAGE_USAGE_STATS non possono essere concessi in questo modo? C'è un'alternativa? –

2

Quindi, ecco una piccola linea di comando (Mac/Linux) per concedere la vostra applicazione tutte le autorizzazioni richieste dalla riga di comando.

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

Se vi capita di non conoscere il nome del permesso o vuole cancellare tutti i permessi è possibile utilizzare

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

** Prestare attenzione a questo comando poiché ripristina tutte le autorizzazioni di sistema. ** pm reset-permissions is parameterless. Non importa su your.package.name. –

Problemi correlati