在Android应用开发中,随着工信部对用户信息保护强度的加大,以及华为等应用市场上架要求趋严,权限管理是非常重要的一部分,因为每种权限都有其对应的功能,如果未经授权的应用意外或恶意使用某些权限,可能会导致用户的隐私泄露或设备受到安全威胁。本文将为大家介绍Android权限的分类及相应权限的作用,还会有一些实际项目中应用的示例供大家参考。
首先,Android权限可分为两类:危险权限和普通权限。
一、危险权限
危险权限需要在运行时动态请求用户授权,如果用户未授权,则应用程序无法使用该权限。
9组24种
(1)SMS短信权限
- SEND_SMS:发送短信
- RECEIVE_SMS:接收短信
- READ_SMS:读取短信
- RECEIVE_WAP_PUSH:接收WAP Push消息
- RECEIVE_MMS:接收彩信
(2)存储权限
- READ_EXTERNAL_STORAGE:读取SD卡中的内容
- WRITE_EXTERNAL_STORAGE:向SD卡中写入内容 举例:比如相册和媒体与文件权限:
rxPermissions.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE) &&
rxPermissions.isGranted(Manifest.permission.READ_EXTERNAL_STORAGE);
(3)联系人权限
- READ_CONTACTS:读取联系人
- WRITE_CONTACTS:写入联系人
- GET_ACCOUNTS:访问帐户列表
(4)手机权限
- READ_PHONE_STATE:读取手机状态
- CALL_PHONE:拨打电话 如果不调用ACTION_CALL,没必要申请,因为打电话一般调用ACTION_DIAL = "android.intent.action.DIAL"
举例:应用中要求的电话权限,是“读取通话状态和移动网络信息、拨打电话”,需要检测如下两种权限:ACTION_CALL = "android.intent.action.CALL"boolean grantPhone = rxPermissions.isGranted(Manifest.permission.READ_PHONE_NUMBERS) && rxPermissions.isGranted(Manifest.permission.READ_PHONE_STATE); - READ_CALL_LOG:读取通话记录
- WRITE_CALL_LOG:写入通话记录
- ADD_VOICEMAIL:添加语音信箱
- USE_SIP:使用SIP协议进行网络电话
- PROCESS_OUTGOING_CALLS:处理呼出电话
(5)日历权限
- READ_CALENDAR:读取日历
- WRITE_CALENDAR:写入日历
(6)相机权限
- CAMERA:访问摄像头
(7)位置权限
- ACCESS_FINE_LOCATION:访问精准位置
- ACCESS_COARSE_LOCATION:访问大致位置
(8)传感器权限
- BODY_SENSORS:访问传感器
(9)麦克风权限
- RECORD_AUDIO:录音
二、普通权限
普通权限不需要动态请求用户授权,只需要在AndroidManifest.xml文件中声明即可。
- ACCESS_CHECKIN_PROPERTIES:读取和写入“properties”表在checkin数据库中
- ACCESS_LOCATION_EXTRA_COMMANDS:访问额外的位置提供命令
- ACCESS_NETWORK_STATE:获取网络信息状态
- ACCESS_NOTIFICATION_POLICY:希望访问通知策略的应用程序的标记许可
- ACCESS_WIFI_STATE:获取当前WiFi接入的状态以及WLAN热点的信息
- ACCOUNT_MANAGER:通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息
- BATTERY_STATS:更新手机电池统计信息
- BIND_ACCESSIBILITY_SERVICE:请求accessibilityservice服务
- BIND_APPWIDGET:告诉appWidget服务需要访问小插件的数据库
- BIND_CARRIER_MESSAGING_SERVICE:绑定到运营商应用程序中的服务
- BIND_CARRIER_SERVICES:绑定到运营商应用程序中的服务
- BIND_CHOOSER_TARGET_SERVICE:由ChooserTargetService要求的服务
- BIND_DEVICE_ADMIN:请求系统管理员receiver
- BIND_DREAM_SERVICE:由一个DreamService要求的服务
- BIND_INCALL_SERVICE:请求MidiDeviceService服务
- BIND_INPUT_METHOD:请求InputMethodService服务
- BIND_MIDI_DEVICE_SERVICE:由一MidiDeviceService要求的服务
- BIND_NFC_SERVICE:由HostApduServiceOffHostApduService要求的服务
- BIND_NOTIFICATION_LISTENER_SERVICE:由notificationlistenerservice要求的服务
- BIND_PRINT_SERVICE:由printservice要求的服务
- BIND_REMOTEVIEWS:通过RemoteViewsService服务请求
- BIND_TELECOM_CONNECTION_SERVICE:由ConnectionService要求的服务
- BIND_TEXT_SERVICE:由textservice要求的服务
- BIND_TV_INPUT:由TvInputService要求的服务
- BIND_VOICE_INTERACTION:由VoiceInteractionService要求的服务
- BIND_VPN_SERVICE:通过VpnService服务请求
- BIND_WALLPAPER:通过WallpaperService服务请求
- BLUETOOTH:连接配对过的蓝牙设备
- BLUETOOTH_ADMIN:发现和配对新的蓝牙设备
- BLUETOOTH_PRIVILEGED:配对蓝牙设备,无需用户交互
- BROADCAST_PACKAGE_REMOVED:广播一个提示消息在一个应用程序包已经移除后
- BROADCAST_SMS:当收到短信时触发广播
- BROADCAST_STICKY:收到广播后快速收到下一个广播
- BROADCAST_WAP_PUSH:WAP PUSH服务收到后触发广播
- CALL_PRIVILEGED:拨打电话,替换系统的拨号器界面
- CAPTURE_AUDIO_OUTPUT:捕获音频输出
- CAPTURE_SECURE_VIDEO_OUTPUT:捕获视频输出
- CAPTURE_VIDEO_OUTPUT:捕获视频输出
- CHANGE_COMPONENT_ENABLED_STATE:改变组件是否启用状态
- CHANGE_CONFIGURATION:改变配置信息
- CHANGE_NETWORK_STATE:改变网络状态,如是否联网
- CHANGE_WIFI_MULTICAST_STATE:改变WiFi多播状态
- CHANGE_WIFI_STATE:改变WiFi状态
- CLEAR_APP_CACHE:清除应用缓存
- CONTROL_LOCATION_UPDATES:获得移动网络定位信息
- DELETE_CACHE_FILES:删除缓存文件
- DELETE_PACKAGES:删除应用
- DIAGNOSTIC:RW到诊断资源
- DISABLE_KEYGUARD:禁用键盘锁
- DUMP:获取系统dump信息
- EXPAND_STATUS_BAR:扩展或收缩状态栏
- FACTORY_TEST:运行工厂测试模式
- FLASHLIGHT:访问闪光灯
- GET_ACCOUNTS_PRIVILEGED:访问帐户服务中的帐户列表
- GET_PACKAGE_SIZE:获取任何package占用空间容量
- GET_TASKS:获取信息有关当前或最近运行的任务
- GLOBAL_SEARCH:允许全局搜索
- INSTALL_LOCATION_PROVIDER:安装定位提供
- INSTALL_PACKAGES:安装应用
- INSTALL_SHORTCUT:创建快捷方式
- INTERNET:访问网络连接
- KILL_BACKGROUND_PROCESSES:结束后台进程
- LOCATION_HARDWARE:使用定位功能的硬件
- MANAGE_DOCUMENTS:管理文档访问
- MASTER_CLEAR:执行软格式化,删除系统配置信息
- MEDIA_CONTENT_CONTROL:控制播放和内容
- MODIFY_AUDIO_SETTINGS:修改声音设置信息
- MODIFY_PHONE_STATE:修改电话状态
- MOUNT_FORMAT_FILESYSTEMS:格式化可移动文件系统
- MOUNT_UNMOUNT_FILESYSTEMS:挂载、反挂载外部文件系统
- NFC:执行NFC近距离通讯操作
- PACKAGE_USAGE_STATS:设置他的activities显示
- PERSISTENT_ACTIVITY:创建一个永久的Activity
- READ_FRAME_BUFFER:读取帧缓存
- READ_INPUT_STATE:读取当前键的输入状态
- READ_LOGS:读取系统底层日志
- READ_SYNC_SETTINGS:读取同步设置
- READ_SYNC_STATS:读取同步状态
- READ_VOICEMAIL:读取语音邮件
- REBOOT:重新启动设备
- RECEIVE_BOOT_COMPLETED:开机自动运行
- REORDER_TASKS:重新排序系统Z轴运行中的任务
- REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:请求忽略电池优化
- REQUEST_INSTALL_PACKAGES:请求安装包
- RESTART_PACKAGES:结束任务
- SEND_RESPOND_VIA_MESSAGE:即时的短信息回复
- SET_ALARM:设置闹铃提醒
- SET_ALWAYS_FINISH:程序在后台是否总是退出
- SET_ANIMATION_SCALE:设置全局动画缩放
- SET_DEBUG_APP:设置调试程序
- SET_PREFERRED_APPLICATIONS:设置应用的参数
- SET_PROCESS_LIMIT:设置最大的进程数量的限制
- SET_TIME:设置系统时间
- SET_TIME_ZONE:设置系统时区
- SET_WALLPAPER:设置桌面壁纸
- SET_WALLPAPER_HINTS:设置壁纸建议
- SIGNAL_PERSISTENT_PROCESSES:发送一个永久的进程信号
- STATUS_BAR:打开、关闭、禁用状态栏
- SYSTEM_ALERT_WINDOW:显示系统窗口
- TRANSMIT_IR:使用设备的红外发射器
- UNINSTALL_SHORTCUT:删除快捷方式
- UPDATE_DEVICE_STATS:更新设备状态
- USE_FINGERPRINT:使用指纹硬件
- VIBRATE:允许程序振动
- WAKE_LOCK :允许程序在手机屏幕关闭后后台进程仍然运行
- WRITE_APN_SETTINGS:允许程序写入网络GPRS接入点设置
- WRITE_GSERVICES:允许程序修改Google服务地图
- WRITE_SECURE_SETTINGS:允许应用程序读取或写入安全系统设置
- WRITE_SETTINGS:允许程序读取或写入系统设置 WRITE_SYNC_SETTINGS:允许程序写入同步设置
- WRITE_VOICEMAIL:允许应用程序修改和删除系统中的现有的语音邮件,只有系统才能使用