2012-02-15 42 views
35

Nhiều tính năng trong Android yêu cầu quyền sử dụng phải được đặt trong tệp kê khai. Những giá trị này sau đó xác định những thiết bị nào sẽ thấy chúng trong Market. Tuy nhiên, những gì nên được thực hiện nếu tính năng này là tùy chọn ... nếu nó có thể được thực hiện để chạy trên nhiều thiết bị, nhưng sẽ yêu cầu sự cho phép chỉ trên một vài?Quyền tùy chọn để ứng dụng có thể hiển thị trên tất cả các thiết bị và bật các tính năng tùy chọn trên một số thiết bị?

Ví dụ: giả sử ứng dụng có nhiều tính năng và lượng nội dung tốt - và nó cung cấp nút để gọi cho công ty. Đó là một tính năng thuận tiện, thay vì viết xuống số hoặc sao chép và dán nó vào ứng dụng điện thoại. Tuy nhiên, điều đó không cần thiết.

Nếu tính năng đó được sử dụng và quyền điện thoại được thêm vào ứng dụng, thì đó là tất cả tốt và tốt cho điện thoại - nhưng không máy tính bảng nào nhìn thấy ứng dụng trong Market.

Giải pháp chung cho vấn đề này là gì?

Nhiều ứng dụng có thể được thực hiện với các quyền khác nhau, nhưng có nhiều vấn đề với cách tiếp cận đó (thời gian phát triển thêm, khó khăn trong việc duy trì tính nhất quán, đánh giá và xếp hạng bảo trì giữa các ứng dụng khác nhau và nếu có nhiều loại tùy chọn khác nhau quyền hơn một ứng dụng khác có thể cần thiết cho mỗi kết hợp).

Ứng dụng có thể kiểm tra theo chương trình nếu tính năng khả dụng và bật hoặc tắt tính năng này tùy thuộc vào thiết bị. Vấn đề với điều đó là nếu ứng dụng không có quyền, thì ứng dụng sẽ bị lỗi nếu nó cố gắng sử dụng tính năng đó - và nếu nó có quyền, một số thiết bị sẽ không thể tìm thấy ứng dụng trong Thị trường.

Trong một số trường hợp nhất định, bạn có thể cắt bỏ hoàn toàn các tính năng không cần thiết khỏi ứng dụng để tránh sự cố. Đó cũng không phải là một giải pháp tuyệt vời, vì những tính năng này sẽ được "rất tốt để có" trên các thiết bị hỗ trợ nó.

Có, tôi biết Is it possible to have "optional" permissions in Android? là một câu hỏi tương tự. Tôi hy vọng cho thông tin mới hơn và cho những cách giải quyết khác mà mọi người đã tìm thấy, nếu có ... giải pháp cho vấn đề này là gì? Có ai có cách tiếp cận khác ngoài những phương pháp tôi đã liệt kê ở trên không?

Trả lời

73

Giải pháp chung cho vấn đề này là gì?

Đối với vấn đề cụ thể đó, hãy thêm <uses-feature android:name="android.hardware.telephony" android:required="false"/> vào tệp kê khai của bạn, để cho biết rằng this feature is optional. Sau đó, bạn có thể sử dụng PackageManagerhasSystemFeature() để xác định xem thiết bị có tính năng không bắt buộc khi chạy hay không.

+3

Vì vậy, sử dụng quyền không thể được thực hiện tùy chọn, nhưng trong nhiều trường hợp sử dụng tính năng có thể được thêm vào, có thể được thực hiện tùy chọn, và đó là nguồn thông tin chính của thị trường để lọc. Xuất sắc! Tất cả đều có ý nghĩa hơn nhiều sau khi đọc liên kết mà bạn cung cấp, cảm ơn. –

+0

@ChadSchultz: Phân tích của bạn được phát hiện tại chỗ. Tôi chỉ muốn các tài liệu tôi liên kết với một chút nổi bật hơn vị trí hiện tại của nó ... :-( – CommonsWare

+3

Đối với những người tìm cách để biết nếu một tính năng có sẵn, hãy làm theo chủ đề đó: http://stackoverflow.com/a/ 5264328/693752 – Snicolas

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