• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Android权限分类和详细

武飞扬头像
晒干的老咸鱼
帮助1

本文参考了以下文章:

Android 中各种权限深入体验及详解

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
系列文章
更多 icon
同类精品
更多 icon
继续加载