2010-12-13 3 views
5

Возможно, приведите свои собственные разрешения, используя тег <uses-permission>?Создание собственных разрешений

Как это

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

Где com.android.myapp этого имя моего пакета и INSTALL_LICENSE этого разрешения, пользователи должны принять

Кроме того, я хотел бы budle целой массы существующих разрешений на эту поэтому клиенту нужно было бы объявить только одно разрешение, и они получат INTERNET, PHONE_STATE и другие разрешения.

+0

Не могли бы вы объяснить, что вы имеете в виду? Разрешения обычно используются для ограничения того, как приложения могут взаимодействовать с аппаратными средствами телефона. – Computerish

+0

@Computerish Я обновил вопрос – jax

ответ

2

Не знаете, что вы подразумеваете под «использованием тега», но вы можете создать новое разрешение, чтобы указать, как другие приложения могут взаимодействовать с действиями и услугами, предоставляемыми вами.

См «Декларирование и обеспечение прав доступа» по адресу:

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

+0

Я обновил вопрос – jax

+0

Хорошо, прочитайте ссылку на сайт разработчика, и все должно быть настроено. –

5

«Кроме того, я хотел бы budle целой массы существующих разрешений в этом одном разрешения».

Um, no. Это преднамеренно вводит дыру в безопасности, позволяя другим приложениям обходить фактические разрешения. Надеюсь, это приведет к тому, что приложение будет выведено из Market, если оно будет найдено.

Если приложение получает доступ к INTERNET, PHONE_STATE или что-то еще, им необходимо объявить реальное разрешение, которое они используют, которое напрямую связано с этой функциональностью.

Что является хорошо, чтобы иметь собственное разрешение, чтобы ограничить доступ приложений к функциям, так и внутри вашего собственного .apk вы реализовать эту функциональность, используя другие разрешения ... но делать не непосредственно разоблачить, что к приложение.

Другими словами, это нормально: объявите разрешение для DO_SOMETHING, которое позволяет приложению сказать, что передача широковещательной передачи вы хотите, чтобы вы что-то делали и возвращали результат «истинный» или «ложный», указывающий, удалось ли это сделать ,

Это не нормально: объявите разрешение для DO_SOMETHING, которое предоставляет API, который позволяет приложению получать состояние телефона, или отправлять некоторые данные, которые они предоставляют с устройства, или извлекать информацию GPS.

Чтобы объявить разрешение в своем приложении, вы используете тег, как описано в документах.

Однако то, что вам действительно нужно, чтобы быть в курсе: в настоящее время, если приложение установлено перед приложение и запрашивает разрешение, он будет не быть предоставлено такое разрешение. (Поскольку разрешение не было известно в момент его установки.) Для получения разрешения необходимо его установить или обновить после установки вашего приложения.

+0

+1 за то, что указал на неприятную дыру в безопасности, связав несколько существующих разрешений в один (звучит как вредоносное приложение для меня)! – Nailuj

+0

@hackbod: что делать, если оба объявления разрешения и использование приложений для разрешения предварительно установлены как системные приложения на прошивке? может ли приложение, использующее приложение, получить доступ к разрешению? –

5

Да, вы можете объявить свое собственное разрешение, и если другое приложение будет хотеть использовать ваше приложение, оно в свою очередь должно объявить ваше разрешение.

Например, вы объявить в манифесте следующее:

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

Затем, в другом приложении, разрешение на доступ ваше приложение будет будет:

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

Можете ли вы привести пример? для чего другое приложение может использовать наше приложение? или как? или какое действие будет вызываться другим приложением? – UnKnown

Смежные вопросы