2013-05-07 31 views
23

Tài liệu Android chứa mô tả sau về cấp adb và lệnh rút lại adb.Tôi làm cách nào để sử dụng adb grant hoặc adb revoke?

grant <PACKAGE_PERMISSION> 

Cấp quyền cho ứng dụng. Chỉ các quyền tùy chọn mà ứng dụng đã khai báo mới có thể được cấp.

revoke <PACKAGE_PERMISSION> 

Thu hồi quyền đối với ứng dụng. Chỉ các quyền tùy chọn mà ứng dụng đã khai báo mới có thể bị thu hồi.

Ai cũng có thể đưa ra ví dụ về cú pháp đúng để sử dụng chúng?

tôi cho rằng sẽ là một phép như android.permission.WRITE_EXTERNAL_STORAGE, hoặc có lẽ chỉ WRITE_EXTERNAL_STORAGE. Tôi đã thử những thứ đó, và một số người khác và tôi không thể làm cho nó hoạt động được.

Tôi cũng đã cố gắng (vô ích) một vài sự kết hợp của gói và sự cho phép, có ý nghĩa hơn đối với tôi (điều này nghe có vẻ giống như một lệnh đó sẽ sửa đổi một sự cho phép trên một gói, không phải tất cả)

Trả lời

34

Vì vậy, trong Lollipop tôi nghĩ rằng bạn cần phải làm "adb shell" đầu tiên sau đó những gì bạn đã cố gắng nên làm việc:

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

Đây là vụ phải thay đổi trên Android M và bạn sẽ có thể chỉ cần sử dụng:

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

Danh sách đầy đủ các quyền có thể được tìm thấy here. Nếu bạn đã thiết lập android build tools, bạn có thể xem những quyền mà ứng dụng đang sử dụng. Đầu tiên sử dụng

adb shell pm list packages -f 

Sau đó sao chép các gói đến máy tính của bạn:

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

Sau đó lấy quyền:

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

Tại sao PACKAGE_USAGE_STATS không thể được cấp theo cách này? Có cách nào khác không? –

2

Vì vậy, đây là một dòng lệnh nhỏ (Mac/Linux) cấp ứng dụng của bạn tất cả các quyền mà nó yêu cầu từ dòng lệnh.

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

Nếu bạn tình cờ không biết tên của phép hoặc muốn xóa tất cả các quyền mà bạn có thể sử dụng

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

** Hãy cẩn thận với lệnh này vì nó đặt lại tất cả các quyền hệ thống của bạn. ** pm đặt lại-quyền là không tham số. Nó không quan tâm đến your.package.name. –