Android权限分类和详细
本文参考了以下文章:
Android系统中权限分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。系统中所有预定义的权限根据作用的不同,分别属于不同的级别。
对于普通(Normal)和危险级别(dangerous)的权限,我们称之为低级权限,应用申请即授予(在你的AndroidManifest.xml中使用一个或多个<permission> 标签声明,Android6.0以后除了声明以外,还需要手动申请,用户在弹窗点击确认之后才能获取到该权限)。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。系统应用可以使用任何权限。权限的声明者可无条件使用该权限。
程序间访问权限大致分为两种:
第一种低级点的(permission的protectlevel属性为normal或者dangerous),其调用者apk只需声明<uses-permission>即可拥有其permission。
第二种高级点的(permission的protectlevel属性为signature或者signatureorsystem),其调用者apk就需要和被调用的apk一样拥有相同的signature
高级权限用有system级别权限设定的api时,需要使其apk拥有system权限。比如在 android 的API中有供给SystemClock.setCurrentTimeMillis()函数来修改系统时间。有两个方法:
第一个方法简单点,不过需要在Android系统源码的情况下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点中插手android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,插手LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有修改系统时间的职权范围了
第2个方法麻烦点,不外不消开虚拟机跑到源码情况下用make来编译:
1. 同上,插手android:sharedUserId="android.uid.system"这个属性。
2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
3. 使用针系统的platform密码钥匙来从头给apk文件签名。signapk platform.x509.pem platform.pk8 input.apk output.apk
小结:
1、拥有signature的权限是否可以不用声明<uses-permission>就能access带normal或dangerous权限设定的数据或功能
只要signature相同,就算不显式声明<ues-permission>也能access设定了normal或dangerous权限设定的数据或功能
2、若需要system级别权限使用系统api(即使用system级别的签名),如何同时使用其他signature权限设定(即使用signature级别的签名)的其他apk的功能?
拥有system级别权限的使用者可以access其他普通signature权限声明设定过的功能。
所以,设定为拥有system级别权限即可。
普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统会自动帮我们进行授权不需要手动操作。
危险权限则表示那些可能会触及到用户安全隐私或者对设备安全造成影响的权限,如获取手机联系人信息等权限,申请者部分权限必须有用户收到点击授权才可以,否则程序无法使用相应的功能。
下面列出 Android 中所有的危险权限,一共是9组24个权限。
权限组名 | 权限名称 |
---|---|
CALENDAR(日历) | READ_CALENDAR |
WRITE_CALENDAR | |
CAMERA(相机) | CAMERA |
CONTACTS(联系人) | READ_CONTACTS |
WRITE_CONTACTS | |
GET_ACCOUNTS | |
LOCATION(位置) | ACCESS_FINE_LOCATION |
ACCESS_COARSE_LOCATION | |
MICROPHONE(麦克风) | RECORD_AUDIO |
PHONE(手机) | READ_PHONE_STATE |
CALL_PHONE | |
ERAD_CALL_LOG | |
WRITE_CALL_LOG | |
ADD_VOICEMAIL | |
USE_SIP | |
PROCESS_OUTGOING_CALLS | |
SENSORS(传感器) | BODY_SENSORS |
SMS(短信) | SEND_SMS |
RECEIVE_SMS | |
READ_SMS | |
RECEIVE_WAP_PUSH | |
RECEIVE_MMS | |
STORAGE(存储卡) | READ_EXTERNAL_STORAGE |
WRITE_EXTERNAL_STORAGE |
这张表可以作为一个参照表,每当使用一个权限的时,可以先到这张表中来查看一下,如果在属于这张表中的权限,那么就需要进行运行时权限处理,如果不在这张表中,那么只需要在AndroidManifest.xml文件中添加一下权限声明就可以了。
另外需要注意,表格中每个危险权限都属于一个权限组,我们在进行运行时权限处理时使用的是权限名,但是用户一旦同意授权了,那么该权限所对应的权限组中所有其他的权限也会同时被授权。
APK在AndroidManifest.xml常用权限
android.permission.ACCESS_CHECKIN_PROPERTIES
//允许读写访问”properties”表在checkin数据库中,改值可以修改上传
android.permission.ACCESS_COARSE_LOCATION
//允许一个程序访问CellID或WiFi热点来获取粗略的位置
android.permission.ACCESS_FINE_LOCATION
//允许一个程序访问精良位置(如GPS)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
//允许应用程序访问额外的位置提供命令
android.permission.ACCESS_MOCK_LOCATION
//允许程序创建模拟位置提供用于测试
android.permission.ACCESS_NETWORK_STATE
//允许程序访问有关GSM网络信息
android.permission.ACCESS_SURFACE_FLINGER
//允许程序使用SurfaceFlinger底层特性
android.permission.ACCESS_WIFI_STATE
//允许程序访问Wi-Fi网络状态信息
android.permission.ADD_SYSTEM_SERVICE
//允许程序发布系统级服务
android.permission.BATTERY_STATS
//允许程序更新手机电池统计信息
android.permission.BLUETOOTH
//允许程序连接到已配对的蓝牙设备
android.permission.BLUETOOTH_ADMIN
//允许程序发现和配对蓝牙设备
android.permission.BRICK
//请求能够禁用设备(非常危险
android.permission.BROADCAST_PACKAGE_REMOVED
//允许程序广播一个提示消息在一个应用程序包已经移除后
android.permission.BROADCAST_STICKY
//允许一个程序广播常用intents
android.permission.CALL_PHONE
//允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认
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连接状态
android.permission.CLEAR_APP_CACHE
//允许一个程序清楚缓存从所有安装的程序在设备中
android.permission.CLEAR_APP_USER_DATA
//允许一个程序清除用户设置
android.permission.CONTROL_LOCATION_UPDATES
//允许启用禁止位置更新提示从无线模块
android.permission.DELETE_CACHE_FILES
//允许程序删除缓存文件
android.permission.DELETE_PACKAGES
//允许一个程序删除包
android.permission.DEVICE_POWER
//允许访问底层电源管理
android.permission.DIAGNOSTIC
//允许程序RW诊断资源
android.permission.DISABLE_KEYGUARD
//允许程序禁用键盘锁
android.permission.DUMP
//允许程序返回状态抓取信息从系统服务
android.permission.EXPAND_STATUS_BAR
//允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序
android.permission.FACTORY_TEST
//作为一个工厂测试程序,运行在root用户
android.permission.FLASHLIGHT
//访问闪光灯,android开发网提示HTC Dream不包含闪光灯
android.permission.FORCE_BACK
//允许程序强行一个后退操作是否在顶层activities
android.permission.FOTA_UPDATE
//暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS
//访问一个帐户列表在Accounts Service中
android.permission.GET_PACKAGE_SIZE
//允许一个程序获取任何package占用空间容量
android.permission.GET_TASKS
//允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等
android.permission.HARDWARE_TEST
//允许访问硬件
android.permission.INJECT_EVENTS
//允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android开发网提醒算是hook技术吧
android.permission.INSTALL_PACKAGES
//允许一个程序安装packages
android.permission.INTERNAL_SYSTEM_WINDOW
//允许打开窗口使用系统用户界面
android.permission.INTERNET
//允许程序打开网络套接字
android.permission.MANAGE_APP_TOKENS
//允许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中
android.permission.MASTER_CLEAR
//目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机
android.permission.MODIFY_AUDIO_SETTINGS
//允许程序修改全局音频设置
android.permission.MODIFY_PHONE_STATE
//允许修改话机状态,如电源,人机接口等
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
//允许挂载和反挂载文件系统可移动存储
android.permission.PERSISTENT_ACTIVITY
//允许一个程序设置他的activities显示
android.permission.PROCESS_OUTGOING_CALLS
//允许程序监视、修改有关播出电话
android.permission.READ_CALENDAR
//允许程序读取用户日历数据
android.permission.READ_CONTACTS
//允许程序读取用户联系人数据
android.permission.READ_FRAME_BUFFER
//允许程序屏幕波或和更多常规的访问帧缓冲数据
android.permission.READ_INPUT_STATE
//允许程序返回当前按键状态
android.permission.READ_LOGS
//允许程序读取底层系统日志文件
android.permission.READ_OWNER_DATA
//允许程序读取所有者数据
android.permission.READ_SMS
//允许程序读取短信息
android.permission.READ_SYNC_SETTINGS
//允许程序读取同步设置
android.permission.READ_SYNC_STATS
//允许程序读取同步状态
android.permission.REBOOT
//请求能够重新启动设备
android.permission.RECEIVE_BOOT_COMPLETED
//允许一个程序接收到
android.permission.RECEIVE_MMS
//允许一个程序监控将收到MMS彩信,记录或处理
android.permission.RECEIVE_SMS
//允许程序监控一个将收到短信息,记录或处理
android.permission.RECEIVE_WAP_PUSH
//允许程序监控将收到WAP PUSH信息
android.permission.RECORD_AUDIO
//允许程序录制音频
android.permission.REORDER_TASKS
//允许程序改变Z轴排列任务
android.permission.RESTART_PACKAGES
//允许程序重新启动其他程序
android.permission.SEND_SMS
//允许程序发送SMS短信
android.permission.SET_ACTIVITY_WATCHER
//允许程序监控或控制activities已经启动全局系统中
android.permission.SET_ALWAYS_FINISH
//允许程序控制是否活动间接完成在处于后台时
android.permission.SET_ANIMATION_SCALE
//修改全局信息比例
android.permission.SET_DEBUG_APP
//配置一个程序用于调试
android.permission.SET_ORIENTATION
//允许底层访问设置屏幕方向和实际旋转
android.permission.SET_PREFERRED_APPLICATIONS
//允许一个程序修改列表参数PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法
android.permission.SET_PROCESS_FOREGROUND
//允许程序当前运行程序强行到前台
android.permission.SET_PROCESS_LIMIT
//允许设置最大的运行进程数量
android.permission.SET_TIME_ZONE
//允许程序设置时间区域
android.permission.SET_WALLPAPER
//允许程序设置壁纸
android.permission.SET_WALLPAPER_HINTS
//允许程序设置壁纸hits
android.permission.SIGNAL_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 Feed内容提供
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
//允许访问振动设备
android.permission.WAKE_LOCK
//允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失
android.permission.WRITE_APN_SETTINGS
//允许程序写入APN设置
android.permission.WRITE_CALENDAR
//允许一个程序写入但不读取用户日历数据
android.permission.WRITE_CONTACTS
//允许程序写入但不读取用户联系人数据
android.permission.WRITE_GSERVICES
//允许程序修改Google服务地图
android.permission.WRITE_OWNER_DATA
//允许一个程序写入但不读取所有者数据
android.permission.WRITE_SETTINGS
//允许程序读取或写入系统设置
android.permission.WRITE_SMS
//允许程序写短信
android.permission.WRITE_SYNC_SETTINGS
//允许程序写入同步设置
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcajie
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13