English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Этот пример рассказывает о работе с permission в Android. Поделюсь с вами для вашего参考, подробности см. ниже:
Когда мы устанавливаем Android-приложение, система будет提示 необходимые permission для этого приложения, по сравнению с другими системами, права Android очень разнообразны. При разработке приложения нам также нужно声明 соответствующие permission, например, если мы хотим, чтобы приложение могло отправлять SMS, нам нужно声明 permission для вызова SMS, в противном случае приложение будет выдавать ошибку при запуске.
Права Android configuring в файле AndroidManifest.xml. В файле AndroidManifest.xml есть четыре тега, связанных с permission, они分别是 <permission>, <permission-group>, <permission-tree> и <uses-permission>. Самым часто используемым является <uses-permission>, когда нам нужно получить определенную permission,我们必须 объявить <uses-permission>в файле manifest.
<?xml version="1.0" encoding="utf-8"?> <manifest> <application> </application> <uses-permission /> <permission /> <permission-tree /> <permission-group /> ... </manifest>
<permission>и <uses-permission>имеют схожее действие, но между ними есть различия. <uses-permission>является android-предdefined permission, а <permission>является permission, которую вы определяете сами. <permission>используется реже, чем <permission-group>и <permission-tree>. Кратко говоря, <permission-group>является объявлением тега, который代表着 группу permissions, а <permission-tree>является namespace для группы permissions. Конкретное использование этих трех тегов будет рассмотрено в后续 статьях.
<permission>определяется следующим образом:
<permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] />
Указанный код взят из официальной документации: http://developer.android.com/guide/topics/manifest/permission-element.html. Атрибут propectionLevel является обязательным и указывает системе на то, что приложение запрашивает у пользователя разрешение, или кто-то думает, что он получил разрешение. Атрибут permissionGroup является опциональным и используется вместе с <permission-group>. Атрибуты label, name и icon используются для описания разрешения. Использование <permission> будет рассмотрено более подробно.
<uses-permission> используется наиболее часто, способ его использования определен в официальной документации следующим образом:
<uses-permission android:name="string" />
Например, определение прав на отправку SMS и вызов телефона:
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.SEND_SMS"/>
Ниже приведены собранные данные о <uses-permission>, что упрощает их поиск при необходимости:
android.permission.ACCESS_CHECKIN_PROPERTIES
Разрешает чтение/запись доступа к таблице “properties” в базе данных checkin, значение может быть изменено перед загрузкой (Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)
android.permission.ACCESS_COARSE_LOCATION
Разрешает программе получить доступ к приблизительному местоположению через CellID или Wi-Fi точку доступа (Allows an application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION
Разрешает программе получить доступ к точному местоположению (например, GPS) (Allows an application to access fine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
Разрешает программе получить доступ к дополнительным командам провайдеров местоположения (Allows an application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION
Разрешает программе создавать имитированные провайдеры местоположения для тестирования (Allows an application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE
Разрешает программе получить информацию о сетях GSM (Allows applications to access information about networks)
android.permission.ACCESS_SURFACE_FLINGER
Разрешает программе использовать низкоуровневые функции SurfaceFlinger (Allows an application to use SurfaceFlinger's low level features)
android.permission.ACCESS_WIFI_STATE
Разрешает программе получать информацию о состоянии Wi-Fi сети (Allows applications to access information about Wi-Fi networks)
android.permission.ADD_SYSTEM_SERVICE
Разрешает программе публиковать системные сервисы (Allows an application to publish system-level services).
android.permission.BATTERY_STATS
Разрешает программе обновлять статистику заряда батареи телефона (Allows an application to update the collected battery statistics)
android.permission.BLUETOOTH
Разрешает программе подключаться к уже сопряженным устройствам Bluetooth (Allows applications to connect to paired bluetooth devices)
android.permission.BLUETOOTH_ADMIN
Разрешает программе обнаруживать и сопоставлять устройства Bluetooth (Allows applications to discover and pair bluetooth devices)
android.permission.BRICK
требуется для возможности выключения устройства (очень опасно) (Required to be able to disable the device (very dangerous!)).
android.permission.BROADCAST_PACKAGE_REMOVED
Разрешает программе广播 уведомление о том, что приложение было удалено (Allows an application to broadcast a notification that an application
package has been removed)
android.permission.BROADCAST_STICKY
Разрешает программе广播 стандартные intents (Allows an application to broadcast sticky intents)
android.permission.CALL_PHONE
Разрешает программе инициировать вызов телефона без перехода через интерфейс вызова для пользователя, чтобы подтвердить совершаемый вызов (Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)
android.permission.CALL_PRIVILEGED
Разрешает программе звонить на любой номер, включая экстренные, без необходимости использовать интерфейс набора номера для подтверждения вызова (Разрешает программе звонить на любой номер, включая экстренные, без необходимости использовать интерфейс набора номера для подтверждения вызова)
android.permission.CAMERA
Требуется для доступа к устройству камеры (Требуется для доступа к устройству камеры).
android.permission.CHANGE_COMPONENT_ENABLED_STATE
Разрешает программе изменить состояние включения или отключения компонента или другого приложения (Разрешает программе изменить состояние включения или отключения компонента или другого приложения).
android.permission.CHANGE_CONFIGURATION
Разрешает программе изменить текущие настройки, такие как локализация (Разрешает программе изменить текущие настройки, такие как локализация).
android.permission.CHANGE_NETWORK_STATE
Разрешает приложениям изменить состояние подключения к сети (Разрешает приложениям изменить состояние подключения к сети).
android.permission.CHANGE_WIFI_STATE
Разрешает приложениям изменить состояние подключения Wi-Fi (Разрешает приложениям изменить состояние подключения Wi-Fi).
android.permission.CLEAR_APP_CACHE
Разрешает программе-clear-cache всех установленных приложений на устройстве (Разрешает программе-clear-cache всех установленных приложений на устройстве).
android.permission.CLEAR_APP_USER_DATA
Разрешает программе очищать пользовательские настройки (Allows an application to clear user data)
android.permission.CONTROL_LOCATION_UPDATES
Разрешает включать или отключать уведомления об обновлении местоположения от модуля радиосвязи (Allows enabling/disabling location update notifications from the radio. )
android.permission.DELETE_CACHE_FILES
Разрешает программе удалять файлы кэша (Allows an application to delete cache files)
android.permission.DELETE_PACKAGES
Разрешает программе удалять пакеты (Allows an application to delete packages)
android.permission.DEVICE_POWER
Разрешает низкоуровневый доступ к управлению питанием (Allowslow-level access to power management)
android.permission.DIAGNOSTIC
Разрешает программам读写诊断 ресурсы (Allows applications to RW to diagnostic resources. )
android.permission.DISABLE_KEYGUARD
Разрешает программам отключать блокировку клавиатуры (Allows applications to disable the keyguard )
android.permission.DUMP
Разрешает программе извлекать информацию о состоянии вывода из системных служб (Allows an application to retrieve state dump information from system services.)
android.permission.EXPAND_STATUS_BAR
Разрешает программе расширять или сжимать статусную строку, android-developer.net предлагает, что это должно быть подобно панельке задач в Windows Mobile (Allows an application to expand or collapse the status bar. )
android.permission.FACTORY_TEST
Запуск в качестве программы для фабричных тестов, работающей от имени root-пользователя (Run as a manufacturer test application, running as the root user. )
android.permission.FLASHLIGHT
Доступ к фонарику, android.development.net напоминает, что HTC Dream не имеет фонарика (Allows access to the flashlight )
android.permission.FORCE_BACK
Разрешает программе принудительно выполнить операцию BACK, если она находится в顶层 activities (Allows an application to force a BACK operation on whatever is the top activity. )
android.permission.FOTA_UPDATE
Точно не знаю, для чего это используется, по анализу с android.development.net, возможно, это резервируемое разрешение.
android.permission.GET_ACCOUNTS
Доступ к списку учетных записей в AccountsService (Allows access to the list of accounts in the Accounts Service)
android.permission.GET_PACKAGE_SIZE
Разрешает программе определить занимаемое любым пакетом пространство (Allows an application to find out the space used by any package. )
android.permission.GET_TASKS
Разрешает программе получать информацию о текущих или недавно выполняемых задачах, краткое представление задач, какие действия выполняются, и т.д. (Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running init, etc.)
android.permission.HARDWARE_TEST
Разрешает доступ к аппаратным периферийным устройствам (Разрешает доступ к аппаратным периферийным устройствам. )
android.permission.INJECT_EVENTS
Разрешает приложению вводить пользовательские события, такие как клавиши, касания, мышь и т.д., в поток событий и передавать их любому окну, android разработка сети напоминает, этоhook технология (Разрешает приложению вводить пользовательские события (клавиши, касания, мышь и т.д.) в поток событий и передавать их любому окну. )
android.permission.INSTALL_PACKAGES
Разрешает программе устанавливать пакеты (Разрешает приложению устанавливать пакеты. )
android.permission.INTERNAL_SYSTEM_WINDOW
Разрешает открывать окна, использующие системный пользовательский интерфейс (Разрешает приложению открывать окна, предназначенные для использования частью системного пользовательского интерфейса. )
android.permission.INTERNET
Разрешает приложениям открывать сетевые сокеты (Разрешает приложениям открывать сетевые сокеты)
android.permission.MANAGE_APP_TOKENS
Разрешает программе управлять (создавать, удалять, Z- порядок по умолчанию смещается в сторону оси Z) программными маркерами в менеджере окон (Разрешает приложению управлять (создавать, удалять, Z- порядок) маркерами приложений в менеджере окон. )
android.permission.MASTER_CLEAR
В настоящее время нет ясного объяснения, android разработка сети анализирует, возможно, это удаление всех данных, подобно жесткому форматированию
android.permission.MODIFY_AUDIO_SETTINGS
Разрешает программе изменять глобальные аудиопараметры (Разрешает приложению изменять глобальные аудиопараметры)
android.permission.MODIFY_PHONE_STATE
Разрешает изменять состояние телефона, например, включение, mmi и т.д. (Разрешает изменять состояние телефона – включение, mmi и т.д.)
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
Разрешает монтировать и демонтировать файловые системы для съемного хранения (Разрешает монтировать и демонтировать файловые системы для съемного хранения)
android.permission.PERSISTENT_ACTIVITY
Разрешает программе устанавливать свои activities для отображения (Разрешает приложению сохранять свои activities)
android.permission.PROCESS_OUTGOING_CALLS
Разрешает программе мониторить, изменять или прерывать исходящие звонки (Разрешает приложению мониторить, изменять или прерывать исходящие звонки)
android.permission.READ_CALENDAR
Разрешает программе читать данные календаря пользователя (Разрешает приложению читать данные календаря пользователя)
android.permission.READ_CONTACTS
Разрешает программе читать данные контактов пользователя (Разрешает приложению читать данные контактов пользователя)
android.permission.READ_FRAME_BUFFER
Разрешает программе доступ к экрану и к более общему доступу к данным буфера кадра (Разрешает приложению делать скриншоты и более общее получение доступа к данным буфера кадра)
android.permission.READ_INPUT_STATE
Разрешает программе получить текущее состояние клавиш и переключателей (Allows an application to retrieve the current state of keys and switches. )
android.permission.READ_LOGS
Разрешает программе читать низкоуровневые системные журналы (Allows an application to read the low-level system log files. )
android.permission.READ_OWNER_DATA
Разрешает программе читать данные владельца (Allows an application to read the owner's data)
android.permission.READ_SMS
Разрешает программе читать короткие сообщения (Allows an application to read SMS messages.)
android.permission.READ_SYNC_SETTINGS
Разрешает программе читать同步 настройки (Allows applications to read the sync settings)
android.permission.READ_SYNC_STATS
Разрешает программе читать同步 статистику (Allows applications to read the sync stats)
android.permission.REBOOT
Требуется возможность перезагрузки устройства (Required to be able to reboot the device. )
android.permission.RECEIVE_BOOT_COMPLETED
Разрешает программе получать广播 ACTION_BOOT_COMPLETED после завершения загрузки системы (Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )
android.permission.RECEIVE_MMS
Разрешает программе наблюдать за поступающими MMS-сообщениями, записывать или обрабатывать их (Allows an application to monitor incoming MMS messages, to record or perform processing on them. )
android.permission.RECEIVE_SMS
Разрешает программе наблюдать за поступающими SMS-сообщениями, записывать или обрабатывать их (Allows an application to monitor incoming SMS messages, to record or perform processing on them.)
android.permission.RECEIVE_WAP_PUSH
Разрешает программе наблюдать за поступающими WAPPUSH-сообщениями (Allows an application to monitor incoming WAP push messages. )
android.permission.RECORD_AUDIO
Разрешает программе записывать аудио (Allows an application to record audio)
android.permission.REORDER_TASKS
Разрешает программе изменять порядок задач по оси Z (Allows an application to change the Z-order of tasks)
android.permission.RESTART_PACKAGES
Разрешает программе перезапускать другие программы (Allows an application to restart other applications)
android.permission.SEND_SMS
Разрешает программе отправлять SMS-сообщения (Allows an application to send SMS messages)
android.permission.SET_ACTIVITY_WATCHER
Разрешает программе наблюдать или контролировать, как активности запускаются глобально в системе (Allows an application to watch and control how activities are started globally in the system.)
android.permission.SET_ALWAYS_FINISH
Разрешает программе контролировать, завершаются ли активности немедленно, когда они помещены в фоновый режим (Allows an application to control whether activities are immediately finished when put in the background.)
android.permission.SET_ANIMATION_SCALE
Изменяет глобальный коэффициент масштабирования анимации (Изменяет глобальный коэффициент масштабирования анимации. )
android.permission.SET_DEBUG_APP
Конфигурирует приложение для отладки (Конфигурирует приложение для отладки. )
android.permission.SET_ORIENTATION
Разрешает низкоуровневый доступ к установке ориентации экрана (Разрешает низкоуровневый доступ к установке ориентации (фактически вращения) экрана. )
android.permission.SET_PREFERRED_APPLICATIONS
Разрешает приложению изменять список предпочтительных приложений с помощью методов PackageManager.addPackageToPreferred() и PackageManager.removePackageFromPreferred() (Разрешает приложению изменять список предпочтительных приложений с помощью методов PackageManager.addPackageToPreferred() и PackageManager.removePackageFromPreferred(). )
android.permission.SET_PROCESS_FOREGROUND
Разрешает приложению принудительно вывести текущий процесс на передний план (Разрешает приложению принудительно выводить любой текущий процесс на передний план. )
android.permission.SET_PROCESS_LIMIT
Разрешает устанавливать максимальное количество запущенных процессов (Разрешает приложению устанавливать максимальное количество (не требуется) процессов, которые могут быть запущены. )
android.permission.SET_TIME_ZONE
Разрешает программе устанавливать время зоны (Allows applications to set the system time zone)
android.permission.SET_WALLPAPER
Разрешает программе устанавливать обои (Allows applications to set the wallpaper )
android.permission.SET_WALLPAPER_HINTS
Разрешает программе устанавливать подсказки для обоев (Allows applications to set the wallpaper hints)
android.permission.SIGNAL_PERSISTENT_PROCESSES
Разрешает программе запросить отправку сигнала всем активным процессам (Allow an application to request that a signal be sent to all persistent processes)
android.permission.STATUS_BAR
Разрешает программе открывать, закрывать или отключать статусную строку и её иконки (Allows an application to open, close, or disable the status bar and its icons.)
android.permission.SUBSCRIBED_FEEDS_READ
Разрешает программе предоставить доступ к содержимому подписанных RSS-фидов (Allows an application to allow access the subscribed feeds ContentProvider.)
android.permission.SUBSCRIBED_FEEDS_WRITE
Эта настройка временно сохраняется системой, android开发网认为未来 версии добавят эту функцию.
android.permission.SYSTEM_ALERT_WINDOW
Разрешает программе открывать окна с использованием типа TYPE_SYSTEM_ALERT, отображаемые поверх всех других приложений (Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications.)
android.permission.VIBRATE
Разрешает доступ к вибратору (Allows access to the vibrator)
android.permission.WAKE_LOCK
Разрешает использовать WakeLocks PowerManager для поддержания процесса в спящем состоянии, чтобы экран не гас (Allows using PowerManager WakeLocks to keep
processor from sleeping or screen from dimming)
android.permission.WRITE_APN_SETTINGS
Разрешает программам записывать настройки API (Allows applications to write the apnsettings)
android.permission.WRITE_CALENDAR
Разрешает программе записывать, но не читать данные календаря пользователя (Allows an application to write (but not read) the user's calendar data. )
android.permission.WRITE_CONTACTS
Разрешает программе записывать, но не читать данные контактов пользователя (Allows an application to write (but not read) the user's contacts data. )
android.permission.WRITE_GSERVICES
Разрешает программе изменять карту Google сервисов (Allows an application to modify the Google service map. )
android.permission.WRITE_OWNER_DATA
Разрешает программе записывать, но не читать данные владельца (Allows an application to write (but not read) the owner's data.)
android.permission.WRITE_SETTINGS
Разрешает программе читать или записывать системные настройки (Allows an application to read or write the system settings. )
android.permission.WRITE_SMS
Разрешает программе写入 SMS (Allows an application to write SMS messages)
android.permission.WRITE_SYNC_SETTINGS
Разрешает программе写入 синхронные настройки (Allows applications to write the sync settings)
PS: О функциях и свойствах файла AndroidManifest.xml можно узнать из онлайн-инструментов этого сайта:
Полное руководство по функциям и правам AndroidManifest.xml:
http://tools.jb51.net/table/AndroidManifest
Дополнительную информацию о разработке Android, интересующую читателей, можно найти в теме этого сайта: «Введение в разработку Android и продвинутые руководства», «Советы по отладке и решения распространенных проблем Android», «Сборник советов по работе с мультимедийными данными Android (аудио, видео, запись и т.д.)», «Обзор основных компонентов Android», «Обзор навыков работы с Android View и ViewGroup», «Обзор навыков работы с Android Layout и LayoutParams» и «Обзор навыков работы с Android View и Widget».
Надеюсь, что это руководство поможет вам в разработке Android-приложений.
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат их законным владельцам, контент был предложен и загружен пользователями Интернета, этот сайт не имеет права собственности на него, не прошел редактирование人工ом и не несет ответственности за него. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. В случае подтверждения, сайт незамедлительно удалят涉嫌侵权的 контент.