2010-12-13 31 views
5

Có thể tạo các quyền của riêng bạn bằng cách sử dụng thẻ <uses-permission> không?Tạo các quyền của riêng bạn

Như thế này

<uses-permission android:name="com.android.myapp.INSTALL_LICENSE"></uses-permission> 

đâu com.android.myapp là tên của gói của tôi và INSTALL_LICENSE là sự cho phép mà người dùng phải chấp nhận

Bên cạnh đó tôi muốn budle rất nhiều toàn bộ các điều khoản có sẵn thành một này sự cho phép để khách hàng chỉ cần khai báo một quyền duy nhất và họ sẽ nhận được quyền INTERNET, PHONE_STATE và các quyền khác.

+0

Ông có thể giải thích những gì bạn nghĩa là gì? Quyền thường được sử dụng để hạn chế cách các ứng dụng có thể tương tác với phần cứng của điện thoại. – Computerish

+0

@Computerish Tôi đã cập nhật câu hỏi – jax

Trả lời

2

Không chắc chắn ý của bạn là "sử dụng thẻ" nhưng bạn có thể tạo quyền mới để chỉ định cách các ứng dụng khác có thể tương tác với các hoạt động và dịch vụ do bạn cung cấp.

Xem "Tuyên bố và thực thi quyền" tại địa chỉ:

http://developer.android.com/guide/topics/security/security.html

+0

Tôi đã cập nhật câu hỏi – jax

+0

Ok, đọc liên kết tới trang web của nhà phát triển và bạn sẽ được thiết lập xong. –

5

"Ngoài ra tôi muốn budle rất nhiều toàn bộ các điều khoản có sẵn thành một sự cho phép này".

Um, no. Điều đó sẽ được cố tình giới thiệu một lỗ hổng bảo mật, cho phép các ứng dụng khác bỏ qua các quyền thực tế. Tôi hy vọng điều này sẽ dẫn đến ứng dụng bị kéo khỏi Market nếu nó được tìm thấy.

Nếu ứng dụng đang truy cập vào INTERNET, PHONE_STATE hoặc bất kỳ ứng dụng nào khác, chúng cần khai báo quyền thực sự mà chúng đang sử dụng được liên kết trực tiếp với chức năng đó.

ổn là phải có sự cho phép của riêng bạn để hạn chế truy cập ứng dụng chức năng của mình, và bên trong của riêng bạn .apk bạn thực hiện chức năng rằng việc sử dụng quyền khác ... nhưng làm không trực tiếp tiếp xúc đó đến ứng dụng.

Nói cách khác, điều này là ổn: Tuyên bố sự cho phép đối với DO_SOMETHING, cho phép ứng dụng gửi một phát mà bạn sẽ làm điều gì đó và trả lại kết quả "đúng" hoặc "sai" cho biết liệu nó có thành công hay không .

Điều này không ổn: Tuyên bố quyền cho DO_SOMETHING, cho phép ứng dụng truy xuất trạng thái điện thoại hoặc gửi một số dữ liệu mà chúng cung cấp ra khỏi thiết bị hoặc truy xuất thông tin GPS.

Để khai báo quyền trong ứng dụng của bạn, bạn sử dụng thẻ như được mô tả trong tài liệu.

Tuy nhiên một cái gì đó bạn thực sự cần phải nhận thức được: hiện nếu một ứng dụng đã được cài đặt trước ứng dụng của bạn và yêu cầu sự cho phép của bạn, nó sẽ không được cấp phép đó. (Bởi vì sự cho phép không được biết tại thời điểm nó được cài đặt.) Cho phép nó được cấp quyền, nó cần phải được cài đặt lại hoặc cập nhật sau khi ứng dụng của bạn được cài đặt.

+0

+1 để chỉ ra lỗ hổng bảo mật khó chịu của gói một số quyền hiện có thành một (giống như một ứng dụng độc hại đối với tôi)! – Nailuj

+0

@hackbod: điều gì xảy ra nếu cả hai tuyên bố quyền và sử dụng ứng dụng quyền đều được cài đặt sẵn làm ứng dụng hệ thống trên chương trình cơ sở? ứng dụng đang sử dụng có thể truy cập quyền không? –

5

Có, bạn có thể khai báo quyền của riêng bạn và nếu ứng dụng khác muốn sử dụng ứng dụng của bạn lần lượt nó sẽ khai báo quyền của bạn.

Ví dụ bạn khai báo trong biểu hiện của bạn như sau:

<permission 
    android:name="com.examples.permissionexample.MY_APP" 
    android:description="@string/boom_perm_string" 
    android:label="@string/boom_permission_label_string"> 
</permission> 

Sau đó, trong ứng dụng khác thì phải được phép truy cập vào ứng dụng của bạn sẽ sẽ là:

<uses-permission android:name="com.examples.permissionexample.MY_APP" /> 
+0

Bạn có thể cho tôi ví dụ không? cho mục đích nào ứng dụng khác có thể sử dụng ứng dụng của chúng tôi? hoặc thế nào? hoặc hoạt động nào sẽ được gọi bởi ứng dụng khác? – UnKnown

Các vấn đề liên quan