Android 权限:权限大全

Posted broadview_java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 权限:权限大全相关的知识,希望对你有一定的参考价值。

1. 前言

        android 中应用权限有助于保护对以下数据和操作的访问/执行权限,从而为保护用户隐私提供支持:

1. 受限数据,例如系统状态和用户的联系信息   

2. 受限操作,例如连接到已配对的设备并录制音频

本篇文章主要介绍Android中所有的权限定义和说明,从基本概念入手一步一步解析权限用法

2. 权限类型

Android 将权限分为不同的类型,包括安装时权限运行时权限特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。

2.1 安装时权限

        安装时权限授予应用对受限数据的受限访问权限,或允许应用执行对系统或其他应用只有最低影响的受限操作。如果您在应用中声明了安装时权限,应用商店会在用户查看应用详情页面时向其显示安装时权限通知,如图 2 所示。系统会在用户安装您的应用时自动向您的应用授予权限。

 Android 提供多个安装时权限子类型,包括一般权限(normal)  +   签名权限 (signature)。

那什么是一般权限,签名权限呢?  我们先来看定义

<permission>的权限级别 android:protectionLevel

来自官网的文档 Android 开发者  |  Android Developers

含义
normal默认值。具有较低风险的权限,此类权限允许请求授权的应用访问隔离的应用级功能,对其他应用、系统或用户的风险非常小。 系统会自动向在安装时请求授权的应用授予此类权限,无需征得用户的明确许可(但用户始终可以选择在安装之前查看这些权限)。
dangerous具有较高风险的权限,此类权限允许请求授权的应用访问用户私人数据或获取可对用户造成不利影响的设备控制权。由于此类权限会带来潜在风险,因此系统可能不会自动向请求授权的应用授予此类权限。例如,应用请求的任何危险权限都可能会向用户显示并且获得确认才会继续执行操作,或者系统会采取一些其他方法来避免用户自动允许使用此类功能。
signature只有在请求授权的应用使用与声明权限的应用相同的证书进行签名时系统才会授予的权限。如果证书匹配,则系统会在不通知用户或征得用户明确许可的情况下自动授予权限。
signatureOrSystem

"signature|privileged" 的旧同义词。在 API 级别 23 中已弃用。

系统仅向位于 Android 系统映像的专用文件夹中的应用  或  使用与声明权限的应用相同的证书进行签名的应用授予的权限。不要使用此选项,因为 signature 保护级别应足以满足大多数需求,无论应用安装在何处,该保护级别都能正常发挥作用。“signatureOrSystem”权限适用于以下特殊情况:多个供应商将应用内置到一个系统映像中,并且需要明确共享特定功能,因为这些功能是一起构建的。

install权限:安装时权限,是指在安装app的时候,赋予app的权限。normalsignature级别的权限都是安装时权限不会给用户提示界面,系统自动决定权限的赋予或拒绝。

Android源码中所有权限定义的文件为:

frameworks/base/core/res/AndroidManifest.xml  

2.2.1 normal 普通权限

举个例子:

    <!-- Allows applications to disable the keyguard if it is not secure.
         <p>Protection level: normal
    -->
    <permission android:name="android.permission.DISABLE_KEYGUARD"
        android:description="@string/permdesc_disableKeyguard"
        android:label="@string/permlab_disableKeyguard"
        android:protectionLevel="normal" />

此权限只要在应用自己的AndroidManifest.xml 声明,那么系统就默认赋予了该权限,无需征得用户的明确许可。

2.2.2 signature 签名权限 

举个例子:

    <!-- Allows an application to get full detailed information about
         recently running tasks, with full fidelity to the real state.
         @hide -->
    <permission android:name="android.permission.GET_DETAILED_TASKS"
        android:protectionLevel="signature" />

签名权限描述:

只有当应用A  与  定义权限的应用B  或  OS  使用相同的证书签名时,系统才会向应用授予签名权限。   怎么理解这句话呢? 

OS 我理解的就是 Android 系统;

我们来回顾一下应用的证书签名这个概念,在应用的Andorid.mk 或 Android.bp 文件中有个属性

LOCAL_CERTIFICATE 用于设置不同的签名方式

LOCAL_CERTIFICATE := PRESIGNED,打包apk时,沿用apk中原来的签名

用于设置不同的签名方式build/target/product/security目录中有四组默认签名供Android.mk在编译APK使用:

        1、testkey:普通APK,默认情况下使用。

        2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。

        3、shared:该APK需要和home/contacts进程共享数据。

        4、media:该APK是media/download系统中的一环。

应用程序的Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签名,未指定的默认用testkey.

如下几种方式:

LOCAL_CERTIFICATE :                    #使用平台文件签名
(1)platform签名: 
AndroidManifest.xml的manifest节点中添加 android:sharedUserId=”android.uid.system”, 
Android.mk中增加  LOCAL_CERTIFICATE := platform 
(2)shared签名: 
AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared”, 
Android.mk中增加LOCAL_CERTIFICATE := shared 
(3)media签名: 
AndroidManifest.xml的manifest节点中增加 android:sharedUserId=”android.media”, 
Android.mk中增加 LOCAL_CERTIFICATE := media 

我们来看第一种情况: 应用A 和 应用B  具有相同的证书签名 

或者这样子理解:等同于两个LOCAL_CERTIFICATE := PRESIGNED 具有相同证书签名应用。

如果应用B先安装的,而且已经申请过权限,(A和B有相同的证书签名)则系统会在不通知用户或征得用户明确许可的情况下,给A应用自动授予这些signature权限。

我们来看第二种情况: 应用A 和 系统签名应用 

上述3中系统签名的应用, 

1.  android:sharedUserId=”android.uid.system”      LOCAL_CERTIFICATE := platform 

这种就比较常见,比如安卓系统中比较重要的系统应用,如设置,SystemUI  Launcher等

2.  android:sharedUserId=”android.uid.shared”     LOCAL_CERTIFICATE := shared

     拥有这类签名的应用,比如 ContactsProvider 应用

3.  android:sharedUserId=”android.media”     LOCAL_CERTIFICATE := media

   多媒体相关的应用 比如 图库, MediaProivder   DownloadProvider 等应用

假如应用A 与上面的这些应用具有相同的证书签名的话,则系统会在不通知用户或征得用户明确许可的情况下,给A应用自动授予这些signature权限。

2.2  运行时权限

        运行时权限也称为危险(dangerous)权限,此类权限授予应用对受限数据的额外访问权限,或允许应用执行对系统和其他应用具有更严重影响的受限操作。因此,您需要先在应用中请求运行时权限然后才能访问受限数据或执行受限操作。

这种也比较好理解:就是当出现这种对话框的时候,这些权限就是运行时权限,定义权限的的保护级别带有   android:protectionLevel="dangerous" 

    <permission android:name="android.permission.ACCESS_FINE_LOCATION"
        android:permissionGroup="android.permission-group.UNDEFINED"
        android:label="@string/permlab_accessFineLocation"
        android:description="@string/permdesc_accessFineLocation"
        android:backgroundPermission="android.permission.ACCESS_BACKGROUND_LOCATION"
        android:protectionLevel="dangerous|instant" />

    <permission android:name="android.permission.CAMERA"
        android:permissionGroup="android.permission-group.UNDEFINED"
        android:label="@string/permlab_camera"
        android:description="@string/permdesc_camera"
        android:protectionLevel="dangerous|instant" />

众所周知,Android6.0引入了动态权限,前面说到的自定义的权限的安全级别android:protectionLevel会影响权限在Android6.0+系统的使用

android:protectionLevel=“normal”,不需要动态申请
android:protectionLevel=“dangerous”,需要动态申请

这样子就更好理解一点了。
 

2.3  特殊权限

        特殊权限与特定的应用操作相对应。只有平台和原始设备制造商 (OEM) 可以定义特殊权限。此外,如果平台和 OEM 想要防止有人执行功能特别强大的操作(例如通过其他应用绘图),通常会定义特殊权限。

        系统设置中的特殊应用访问权限页面包含一组用户可切换的操作。其中的许多操作都是以特殊权限的形式实现的。

        特殊权限旨在限制访问尤其敏感或与用户隐私没有直接关系的系统资源。这些权限不同于安装时权限和运行时权限。

一些特殊权限示例:

  • 设定精确的闹钟。
  • 在其他应用前方显示和绘图。
  • 访问所有存储数据。

声明特殊权限的应用会显示在系统设置中的特殊应用权限页面内(图 1)。如需向应用授予特殊权限,用户必须转到此页面:设置 > 应用 > 特殊应用权限

Android上声明和请求特殊权限的工作流程

 【备注】: 与运行时权限不同,用户必须从系统设置中的特殊应用权限页面授予特殊权限。应用可以使用 intent 将用户转到该页面,这会暂停应用,并启动相应的设置页面,以便用户授予指定的特殊权限。用户返回到应用后,应用可以在 onResume() 函数中检查是否已获得相应权限。

以下示例代码展示了如何请求用户授予 SCHEDULE_EXACT_ALARMS 特殊权限:

val alarmManager = getSystemService<AlarmManager>(Context.ALARM_SERVICE)
when 
   // if permission is granted, proceed with scheduling exact alarms…
   alarmManager.canScheduleExactAlarms() -> 
       alarmManager.setExact(...)
   
   else -> 
       // ask users to grant the permission in the corresponding settings page
       startActivity(Intent(ACTION_REQUEST_SCHEDULE_EXACT_ALARM))
   

在 onResume() 中检查权限和处理用户决定的示例代码:

override fun onResume() 
   // ...

   if (alarmManager.canScheduleExactAlarms()) 
       // proceed with the action (setting exact alarms)
       alarmManager.setExact(...)
   
   else 
       // permission not yet approved. Display user notice and gracefully degrade
       your app experience.
       alarmManager.setWindow(...)
   

3. 权限大全

3.1 运行时(危险)权限

运行时(危险)权限以及对应分组如下,也就是说这些权限都需要动态申请的

 再详细说明一下:

权限组: CONTACTS   API级别:23   
描述:  联系人和配置文件相关的运行时权限。

名称保护等级API级别叙述
READ_CONTACTS危险1允许应用读取用户联系人数据。
WRITE_CONTACTS危险1允许应用写入用户联系人数据。
GET_ACCOUNTS危险1允许访问帐户服务中的帐户列表。

权限组:CALENDAR   API级别:17

描述:用户日历相关的运行时权限。

名称保护等级API级别叙述
READ_CALENDAR危险1允许应用读取用户日历数据。
WRITE_CALENDAR危险1允许应用写入用户日历数据。

权限组:SMS   API级别:23

描述:短信相关的运行时权限。

名称保护等级API级别叙述
SEND_SMS危险1允许应用发送短信。
RECEIVE_SMS危险1允许应用接收短信。
READ_SMS危险1允许应用访问SMS信息。
RECEIVE_WAP_PUSH危险1允许应用接收WAP推送信息。
RECEIVE_MMS危险1允许应用监视传入的彩信。
READ_CELL_BROADCASTS危险-

允许应用读取小区广播消息。

权限组:STORAGE  API级别:4

描述:外部存储相关的运行时权限。API级别Q以后不再建议使用。

名称保护等级API级别叙述
READ_EXTERNAL_STORAGE危险16允许应用读取扩展存储。
API级别Q以后不再建议使用。
WRITE_EXTERNAL_STORAGE危险4允许应用写入扩展存储。
API级别Q以后不再建议使用。

权限组:LOCATION  API级别:1

描述:允许访问设备位置信息的权限。

名称保护等级API级别叙述
ACCESS_FINE_LOCATION危险1允许应用访问精确的位置。
ACCESS_COARSE_LOCATION危险1允许应用访问大概的位置。

权限组:CALL_LOG  API级别:28

描述:电话功能的权限。

名称保护等级API级别叙述
PROCESS_OUTGOING_CALLS危险1允许应用查看拨出呼叫期间拨出的号码。
READ_CALL_LOG危险16允许应用读取用户通话日志。
WRITE_CALL_LOG危险16允许应用写入用户通话日志。

权限组:PHONE  API级别:23

描述: 电话功能相关的权限。

名称保护等级API级别叙述
CALL_PHONE危险1允许应用在不经过拨号界面的情况下启动电话呼叫,以便用户确认呼叫。
READ_PHONE_STATE危险1允许应用访问电话状态。
USE_SIP危险9允许应用使用SIP服务。
ADD_VOICEMAIL危险14允许应用向系统中添加语音邮件。
ANSWER_PHONE_CALLS危险26允许应用接听来电。
MANAGE_OWN_CALLS正常26允许调用应用通过自我管理的ConnectionService API管理自己的调用。
READ_PHONE_NUMBERS危险26允许应用读取设备的电话号码。
ACCEPT_HANDOVER危险28允许呼叫应用继续在其他应用中启动的呼叫。
例如,视频通话应用希望在用户的移动网络上继续语音通话。
ACCESS_UCE_PRESENCE_SERVICE签名|专用-允许应用访问UCE-Presence。
ACCESS_UCE_OPTIONS_SERVICE签名|专用-允许应用访问UCE-OPTIONS。

权限组: MICROPHONE  API级别:17

描述:访问麦克风相关的权限。请注意,电话呼叫也会捕获音频,但属于单独的权限组。

名称保护等级API级别叙述
RECORD_AUDIO危险1

允许应用录音。

权限组: CAMERA   API级别:17

描述:访问相机或从设备捕获图像/视频相关的权限。

名称保护等级API级别叙述
CAMERA危险|立即1允许访问摄像头。

权限组:SENSORS  API级别:23

描述:身体或环境传感器相关的权限。

名称保护等级API级别叙述
BODY_SENSORS危险20允许应用访问身体传感器的数据。

3.2 normal权限

非完整归纳,涵盖大部分

名称保护等级API级别叙述
ACCESS_LOCATION_EXTRA_COMMANDS正常1允许程序获取额外的位置信息提供程序命令。
ACCESS_NETWORK_STATE正常|立即1允许应用获取网络信息状态。
ACCESS_WIFI_STATE正常1允许应用获取当前WiFi接入的状态以及WLAN热点的信息。
BLUETOOTH正常1允许程序连接配对过的蓝牙设备。
BLUETOOTH_ADMIN正常1允许程序发现和配对新的蓝牙设备。
BROADCAST_STICKY正常1允许应用发送持久广播。
CHANGE_NETWORK_STATE正常1允许应用更改网络连接状态。
CHANGE_WIFI_STATE正常1允许应用更改Wi-Fi连接状态。
DELETE_PACKAGES正常1允许程序删除应用。
对第三方应用不可用。
DISABLE_KEYGUARD正常1允许应用停用键锁以及任何关联的密码安全措施。
EXPAND_STATUS_BAR正常1允许程序展开/收拢状态栏。
GET_PACKAGE_SIZE正常1允许应用计算应用存储空间。
GET_TASKS正常1允许程序获取当前或最近运行的应用。
API级别21以后不再建议使用。
INTERNET正常|立即1允许应用访问网络连接。
MODIFY_AUDIO_SETTINGS正常1允许应用修改全局声音设置。
PERSISTENT_ACTIVITY正常1让应用始终运行。
API级别15以后不再建议使用。
READ_SYNC_SETTINGS正常1允许应用读取同步设置。
READ_SYNC_STATS正常1允许应用读取同步状态。
RECEIVE_BOOT_COMPLETED正常1允许应用开机启动。
REORDER_TASKS正常1允许应用对正在运行的应用重新排序。
RESTART_PACKAGES正常1允许应用关闭其他应用。
API级别15以后不再建议使用。
SET_WALLPAPER正常1允许应用设置壁纸。
SET_WALLPAPER_HINTS正常1允许应用设置壁纸提示。
VIBRATE正常|立即1允许应用使用震动。
WAKE_LOCK正常1允许应用防止手机休眠。
CHANGE_WIFI_MULTICAST_STATE正常4允许应用进入Wi-Fi多播模式。
KILL_BACKGROUND_PROCESSES正常8允许应用关闭其他应用。
NFC正常9允许应用通过NFC执行I/O操作。
WRITE_SYNC_SETTINGS正常1允许应用写入同步设置。
SET_ALARM正常9允许应用使用Intent通过广播设置闹钟。
INSTALL_SHORTCUT正常19允许应用安装快捷方式。
API级别26以后通过ShortcutManager.requestPinShortcut()实现。
TRANSMIT_IR正常19允许应用使用设备的红外发射器。
UNINSTALL_SHORTCUT正常19允许应用卸载快捷方式。
ACCESS_NOTIFICATION_POLICY正常23允许应用读取和写入“勿扰”模式配置。
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS正常23允许应用请求忽略电池优化。
REQUEST_COMPANION_RUN_IN_BACKGROUND正常26允许应用在后台运行。
REQUEST_COMPANION_USE_DATA_IN_BACKGROUND正常26允许应用在后台使用数据。
REQUEST_DELETE_PACKAGES正常26允许应用程序请求删除软件包。
FOREGROUND_SERVICE正常28允许应用使用前台服务。
NFC_TRANSACTION_EVENT正常28允许应用接收NFC事务事件。
CALL_COMPANION_APP正常Q允许实现InCallService API的应用有资格作为调用伴随应用启用。
ACCESS_BACKGROUND_LOCATION危险Q允许应用在后台访问位置。
如果请求这个权限,您还应该请求ACCESS_FINE_LOCATION。
ACCESS_MEDIA_LOCATION-Q允许应用访问用户共享集合中保留的任何地理位置。
ACTIVITY_RECOGNITION危险Q允许应用识别当前用户的物理活动。
比如:行走,驾驶或者静止站立。
BIND_SMS_APP_SERVICE-QSmsAppService的子类必要。
GET_AND_REQUEST_SCREEN_LOCK_COMPLEXITY正常Q允许应用获得屏幕锁定复杂度并提示用户,
将屏幕锁定更新到特定的复杂性级别。
READ_MEDIA_AUDIO-Q允许应用读取用户共享音频集合。
READ_MEDIA_IMAGES-Q允许应用读取用户共享图像集合。
READ_MEDIA_VIDEO-Q允许应用读取用户共享视频集合。
SMS_FINANCIAL_TRANSACTIONS-Q允许财务应用读取过滤信息。
USE_FULL_SCREEN_INTENT-Q对于命中Build.VERSION_CODES.Q的想要使用通知全屏Intents的应用是必需的。

3.3 signature签名权限

名称保护等级API级别叙述
ACCESS_CHECKIN_PROPERTIES签名|专用1允许应用读取/写入登记check-in数据库属性表。
对第三方应用不可用。
ACCOUNT_MANAGER签名5允许应用获取账户验证信息。
对第三方应用不可用。
BATTERY_STATS签名|专用|开发1允许应用收集电池统计信息。
BIND_ACCESSIBILITY_SERVICE签名16AccessibilityService必要。
确保只有系统可以绑定到它。
BIND_APPWIDGET签名|专用3允许应用告诉AppWidget服务哪个应用可以访问AppWidget的数据。
对第三方应用不可用。
BIND_AUTOFILL_SERVICE签名26AutofillService必要。
确保只有系统可以绑定到它。
BIND_CALL_REDIRECTION_SERVICE签名|专用QCallRedirectionService必要。
确保只有系统可以绑定到它。
BIND_CARRIER_MESSAGING_SERVICE签名|专用22API级别23以后不再建议使用,使用BIND_CARRIER_SERVICES
BIND_CARRIER_SERVICES签名|专用23允许应用绑定到运营商服务。
BIND_CHOOSER_TARGET_SERVICE签名23ChooserTargetService必要。
确保只有系统可以绑定到它。
BIND_CONDITION_PROVIDER_SERVICE签名24ConditionProviderService必要。
确保只有系统可以绑定到它。
BIND_DEVICE_ADMIN签名8系统管理员接收者必要。
确保只有系统可以绑定到它。
BIND_DREAM_SERVICE签名21DreamService必要。
确保只有系统可以绑定到它。
BIND_INCALL_SERVICE签名|专用23InCallService必要。
确保只有系统可以绑定到它。
BIND_INPUT_METHOD签名3InputMethodService必要。
确保只有系统可以绑定到它。
BIND_MIDI_DEVICE_SERVICE签名23MidiDeviceService必要。
确保只有系统可以绑定到它。
BIND_NFC_SERVICE签名19HostApduService或OffHostApduService必要。
确保只有系统可以绑定到它。
BIND_NOTIFICATION_LISTENER_SERVICE签名18NotificationListenerService必要。
确保只有系统可以绑定到它。
BIND_PRINT_SERVICE签名19PrintService必要。
确保只有系统可以绑定到它。
BIND_QUICK_SETTINGS_TILE签名24允许应用绑定到第3方快速设置。
TileService必要。确保只有系统可以绑定到它。
BIND_REMOTEVIEWS签名|专用11RemoteViewsService必要。
确保只有系统可以绑定到它。
BIND_SCREENING_SERVICE签名|专用24CallScreeningService必要。
确保只有系统可以绑定到它。
BIND_TELECOM_CONNECTION_SERVICE签名|专用23ConnectionService必要。
确保只有系统可以绑定到它。
BIND_TEXT_SERVICE签名14TextService(比如SpellCheckerService)必要。
确保只有系统可以绑定到它。
BIND_TV_INPUT签名|专用21TvInputService必要。
确保只有系统可以绑定到它。
BIND_VISUAL_VOICEMAIL_SERVICE签名|专用26链接VisualVoicemailService必要。
确保只有系统可以绑定到它。
BIND_VOICE_INTERACTION签名21VoiceInteractionService必要。
确保只有系统可以绑定到它。
BIND_VPN_SERVICE签名14VpnService必要。
确保只有系统可以绑定到它。
BIND_VR_LISTENER_SERVICE签名24VrListenerService必要。
确保只有系统可以绑定到它。
BIND_WALLPAPER签名|专用8WallpaperService必要。
确保只有系统可以绑定到它。
BLUETOOTH_PRIVILEGED签名|专用19允许应用配对蓝牙设备而无需用户交互,
并允许或禁止电话簿访问或消息访问。
对第三方应用不可用。
BROADCAST_PACKAGE_REMOVED签名1允许应用广播已删除应用包的通知。
对第三方应用不可用。
BROADCAST_SMS签名2允许应用广播短信息接收通知。
对第三方应用不可用。
BROADCAST_WAP_PUSH签名2允许应用广播WAP推送回执通知。
对第三方应用不可用。
CALL_PRIVILEGED签名|专用1允许应用调用任何电话号码,包括紧急号码,
而无需通过拨号界面让用户确认正在呼叫。
对第三方应用不可用。
CAPTURE_AUDIO_OUTPUT签名|专用19允许应用捕获音频输出。
对第三方应用不可用。
CHANGE_COMPONENT_ENABLED_STATE签名|专用1允许应用改变组件启用状态(而不是其自己的组件)。
对第三方应用不可用。
CHANGE_CONFIGURATION签名|专用|开发1允许应用修改当前配置,如区域设置。
CLEAR_APP_CACHE签名|专用1允许应用清除设备上所有已安装应用的缓存。
CONTROL_LOCATION_UPDATES签名|专用1允许启用/禁止无线模块位置更新提示。
对第三方应用不可用。
DELETE_CACHE_FILES签名|专用1允许应用删除缓存文件。
DIAGNOSTIC签名1允许应用将RW转换为诊断资源。
对第三方应用不可用。
DUMP签名|专用|开发1允许程序从系统服务获取系统dump信息。
对第三方应用不可用。
FACTORY_TEST签名1允许程序运行工厂测试模式。
对第三方应用不可用。
GET_ACCOUNTS_PRIVILEGED签名|专用23允许访问帐户服务中的帐户列表。
GLOBAL_SEARCH签名|专用4此权限用于内容提供程序,以允许全局搜索系统访问其数据。
INSTALL_LOCATION_PROVIDER签名|专用4允许应用将位置提供程序安装到位置管理器中。
对第三方应用不可用。
INSTALL_PACKAGES签名|专用1允许应用安装APK。
对第三方应用不可用。
INSTANT_APP_FOREGROUND_SERVICE签名|开发|立即|应用26允许应用创建前台服务。
MANAGE_DOCUMENTS签名19允许应用管理访问文档,通常作为文档选取器的一部分。
对第三方应用不可用。
MASTER_CLEAR签名|专用1允许应用执行软格式化。
对第三方应用不可用。
MEDIA_CONTENT_CONTROL签名|专用19允许应用知道正在播放的内容并控制其播放。
对第三方应用不可用。
MODIFY_PHONE_STATE签名|专用1允许修改手机状态。
对第三方应用不可用。
MOUNT_FORMAT_FILESYSTEMS签名|专用3允许格式可移动存储。
对第三方应用不可用。
MOUNT_UNMOUNT_FILESYSTEMS签名|专用1允许挂载/卸载可移动存储。
对第三方应用不可用。
PACKAGE_USAGE_STATS签名|开发|立即|应用23允许应用收集组件使用统计信息。
READ_FRAME_BUFFER签名|专用-允许应用读取帧缓存用于屏幕截图。
对第三方应用不可用。
READ_INPUT_STATE签名1允许应用检索按键和开关的当前状态。
API级别16以后不再建议使用。
对第三方应用不可用。
READ_LOGS签名|专用|开发1允许应用读取系统底层日志。
对第三方应用不可用。
READ_VOICEMAIL签名|专用21允许应用读取系统语音邮件。
REBOOT签名|专用1允许应用重启设备。
对第三方应用不可用。
REQUEST_INSTALL_PACKAGES签名|应用23允许应用请求安装软件包。
API级别25以后的应用必须拥有此权限才能使用ACTION_INSTALL_PACKAGE。
SEND_RESPOND_VIA_MESSAGE签名|专用18在通话期间,允许应用(电话)向其他应用发送请求,处理respond-via-message动作。
对第三方应用不可用。
SET_ALWAYS_FINISH签名|专用|开发1允许应用控制在后台运行时是否立即结束活动。
对第三方应用不可用。
SET_ANIMATION_SCALE签名|专用|开发1修改全局动画比例因子。
对第三方应用不可用。
SET_DEBUG_APP签名|专用|开发1设置为Debug应用。
对第三方应用不可用。
SET_PREFERRED_APPLICATIONS签名|验证1允许应用设置首选应用。
API级别15以后不再建议使用。
SET_PROCESS_LIMIT签名|专用|开发1允许应用设置可以运行的最大(不需要的)进程数。
对第三方应用不可用。
SET_TIME签名|专用8允许应用设置系统时间。
对第三方应用不可用。
SET_TIME_ZONE签名|专用1允许应用设置系统时区。
对第三方应用不可用。
SIGNAL_PERSISTENT_PROCESSES签名|专用|开发1允许应用请求向所有持久进程发送信号。
对第三方应用不可用。
STATUS_BAR签名|专用1允许应用打开、关闭、禁用状态栏和图标。
对第三方应用不可用。
SYSTEM_ALERT_WINDOW签名|应用|开发|预安装1允许应用显示在其他应用上方。
API级别23后不再建议使用。
UPDATE_DEVICE_STATS签名|专用3允许应用更新设备状态。
对第三方应用不可用。
WRITE_APN_SETTINGS签名|专用1允许应用写入APN设置并读取现有APN设置的敏感字段。
对第三方应用不可用。
WRITE_GSERVICES签名|专用1允许应用修改Google服务地图。
对第三方应用不可用。
WRITE_SECURE_SETTINGS签名|专用|开发3允许应用读写安全系统设置。
对第三方应用不可用。
WRITE_SETTINGS签名|预安装|应用1允许应用读写系统设置。
API级别23后不再建议使用。
WRITE_VOICEMAIL签名|专用21允许应用修改删除系统语音邮件。

3.4 @hide属性权限

与(Android 将权限分为不同的类型,包括安装时权限运行时权限特殊权限)分类概念没有关系。

比如在AndoridManifest.xml 这样申明的, 有明确 @hide标识的, 这里只是分类单独归纳出来,

    <!-- @SystemApi @hide Allows an application to mark other applications as harmful -->
    <permission android:name="android.permission.SET_HARMFUL_APP_WARNINGS"
        android:protectionLevel="XXXXX" />

名称保护等级API级别叙述
ACCESS_AMBIENT_LIGHT_STATS签名|专用|开发-允许应用收集环境光状态。
对第三方应用不可用。
ACCESS_BROADCAST_RADIO签名|专用-允许访问广播电台。
对第三方应用不可用。
ACCESS_CACHE_FILESYSTEM签名|专用-允许应用读写缓存分区。
ACCESS_CONTENT_PROVIDERS_EXTERNALLY签名-允许通过ApplicationThread外部访问内容提供程序。
ACCESS_DRM_CERTIFICATES签名|专用-允许应用提供和访问DRM凭证。
对第三方应用不可用。
ACCESS_FM_RADIO签名|专用-允许访问FM。
对第三方应用不可用。
ACCESS_IMS_CALL_SERVICE签名|专用-允许程序使用即时通讯通话服务。
ACCESS_INPUT_FLINGER签名-允许应用访问InputFlinger。
ACCESS_INSTANT_APPS签名|安装|验证-允许访问和管理即时应用。
ACCESS_KEYGUARD_SECURE_STORAGE签名-允许应用访问键盘安全存储。
ACCESS_LOWPAN_STATE签名|专用-允许应用访问LoWPAN。
对第三方应用不可用。
ACCESS_MOCK_LOCATION签名1允许应用获取模拟定位信息。
ACCESS_MTP签名|专用-允许应用访问MTP-USB内核驱动程序。
仅用于设备端MTP实现。
ACCESS_NETWORK_CONDITIONS签名|专用-允许应用监听网络状态。
对第三方应用不可用。
ACCESS_NOTIFICATIONS签名|专用|应用-允许应用程序读取当前通知集。
ACCESS_PDB_STATE签名-允许查询PersistentDataBlock的状态。
对第三方应用不可用。
ACCESS_SHORTCUTS签名|文本分类器-允许访问所有应用快捷方式。
ACCESS_SURFACE_FLINGER签名1允许应用访问Android平台上底层的图形显示支持。
对第三方应用不可用。
ACCESS_VOICE_INTERACTION_SERVICE签名-允许应用与当前语音交互服务交互。
ACCESS_VR_MANAGER签名-允许应用访问IVrManager。
ACCESS_VR_STATE签名|预安装-需要通过访问VR-Mode状态和状态更改事件。
ACCESS_WIMAX_STATE正常-允许应用建立或中断WiMAX网络连接。
ACTIVITY_EMBEDDING签名|专用|开发-允许应用嵌入其他Activity。
ALLOCATE_AGGRESSIVE签名|专用-允许应用分配磁盘空间。
对第三方应用不可用。
ALLOW_ANY_CODEC_FOR_PLAYBACK签名|专用-允许应用在解码播放时使用任何媒体解码器。
ASEC_ACCESS签名-允许应用访问ASEC无损API。
ASEC_CREATE签名-允许创建ASEC卷。
ASEC_DESTROY签名-允许销毁ASEC卷。
ASEC_MOUNT_UNMOUNT签名-允许装载/卸载ASEC卷。
ASEC_RENAME签名-允许为ASEC卷改名。
BACKUP签名|专用-允许应用控制备份和还原过程。
对第三方应用不可用。
BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE签名-允许应用访问AutofillFieldClassificationService。
确保只有系统可以绑定到它。
对第三方应用不可用。
BIND_AUTOFILL签名-允许应用绑定自动填充。
BIND_CACHE_QUOTA_SERVICE签名-允许应用访问CacheQuotaService。
对第三方应用不可用。
BIND_COMPANION_DEVICE_MANAGER_SERVICE签名-允许应用访问CompanionDeviceManager。
确保只有系统可以绑定到它。
BIND_CONNECTION_SERVICE签名|专用-允许应用绑定ConnectionService。
BIND_DIRECTORY_SEARCH签名|专用-允许应用搜索联系人目录。这只能由ContactsProvider使用。
对第三方应用不可用。
BIND_EUICC_SERVICE签名-允许应用调用EuiccService。
确保只有系统可以绑定到它。
BIND_IMS_SERVICE签名|专用-允许应用调用ImsService。
确保只有系统可以绑定到它。
BIND_INTENT_FILTER_VERIFIER签名-允许过滤接收器。
确保只有系统可以绑定到它。
BIND_JOB_SERVICE签名-允许应用绑定任务服务。
BIND_KEYGUARD_APPWIDGET签名|专用-允许在键盘添加小部件。
BIND_NETWORK_RECOMMENDATION_SERVICE签名-允许系统绑定到发现的网络推荐服务。
BIND_NOTIFICATION_ASSISTANT_SERVICE签名-允许应用访问NotificationAssistantService。
确保只有系统可以绑定到它。
BIND_PACKAGE_VERIFIER签名-包验证接收器必要。
确保只有系统可以绑定到它。
BIND_PRINT_RECOMMENDATION_SERVICE签名-允许应用访问RecommendationService。
确保只有系统可以绑定到它。
BIND_PRINT_SPOOLER_SERVICE签名-允许应用访问PrintSpooler。
确保只有系统可以绑定到它。
BIND_REMOTE_DISPLAY签名-允许应用访问RemoteDisplayProvider。
确保只有系统可以绑定到它。
BIND_RESOLVER_RANKER_SERVICE签名-允许应用扩展ResolverRankerService。
确保只有系统可以绑定到它。
BIND_ROUTE_PROVIDER签名-允许应用访问MediaRouteService。
确保只有系统可以绑定到它。
BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE签名-允许应用访问RuntimePermissionPresenterService。
确保只有系统可以绑定到它。
BIND_SETTINGS_SUGGESTIONS_SERVICE签名-允许应用绑定到建议服务。
BIND_SOUND_TRIGGER_DETECTION_SERVICE签名-允许服务检测声音。
BIND_TELEPHONY_DATA_SERVICE签名-允许应用使用电话数据服务。
确保只有系统可以绑定到它。
BIND_TELEPHONY_NETWORK_SERVICE签名-允许应用调用NetworkService。
确保只有系统可以绑定到它。
BIND_TEXTCLASSIFIER_SERVICE签名-允许应用访问TextClassifierService。
确保只有系统可以绑定到它。
对第三方应用不可用。
BIND_TRUST_AGENT签名-允许应用访问TrustAgentService。
确保只有系统可以绑定到它。
BIND_TV_REMOTE_SERVICE签名|专用-允许应用访问TvRemoteProvider。
确保只有系统可以绑定到它。
对第三方应用不可用。
BLUETOOTH_MAP签名-控制对仅用于蓝牙的电子邮件提供商的访问。
BLUETOOTH_STACK签名-允许蓝牙堆栈访问文件。
只能由蓝牙APK使用。
BRICK签名-允许应用禁用手机。
对第三方应用不可用。
BRIGHTNESS_SLIDER_USAGE签名|专用|开发-允许应用收集亮度滑块更改信息。
对第三方应用不可用。
BROADCAST_NETWORK_专用签名|专用-允许应用广播专用网络请求。
对第三方应用不可用。
C2D_MESSAGE签名-C2DM权限。
CACHE_CONTENT签名-允许应用缓存内容。
对第三方应用不可用。
CAMERA_DISABLE_TRANSMIT_LED签名|专用-允许禁用应用使用相机时正常打开的传输指示灯LED。
CAMERA_SEND_SYSTEM_EVENTS签名|专用-允许发送有关系统范围内事件的照相机服务通知。
CAPTURE_AUDIO_HOTWORD签名|专用-允许应用捕获音频进行Hotword检测。
对第三方应用不可用。
CAPTURE_SECURE_VIDEO_OUTPUT签名|专用-允许应用捕获安全视频输出。
对第三方应用不可用。
CAPTURE_TV_INPUT签名|专用-允许捕获一帧电视输入硬件。
对第三方应用不可用。
CAPTURE_VIDEO_OUTPUT签名|专用-允许应用捕获视频输出。
对第三方应用不可用。
CARRIER_FILTER_SMS签名|专用-允许应用筛选特定运营商的短信。
CHANGE_ACCESSIBILITY_VOLUME签名-允许应用更改辅助功能卷。
CHANGE_APP_IDLE_STATE签名|专用-允许应用更改空闲状态。
对第三方应用不可用。
CHANGE_BACKGROUND_DATA_SETTING签名-允许应用更改后台数据设置。
对第三方应用不可用。
CHANGE_DEVICE_IDLE_TEMP_WHITELIST签名|专用-允许应用访问网络和获取唤醒锁。
对第三方应用不可用。
CHANGE_HDMI_CEC_ACTIVE_SOURCE签名|专用-允许应用更改HDMI-CEC活动源。
对第三方应用不可用。
CHANGE_LOWPAN_STATE签名|专用-允许应用更改LoWPAN状态。
对第三方应用不可用。
CHANGE_OVERLAY_PACKAGES签名|专用-允许应用更改资源覆盖的优先级。
CHANGE_WIMAX_STATE正常-允许应用更改WiMAX状态。
CLEAR_APP_GRANTED_URI_PERMISSIONS签名-允许应用清除其他应用的URI权限。
对第三方应用不可用。
CLEAR_APP_USER_DATA签名|专用1允许应用清除设备上所有已安装应用的用户数据。
CONFIGURE_DISPLAY_BRIGHTNESS签名|专用|开发-允许应用修改亮度。
CONFIGURE_DISPLAY_COLOR_MODE签名-允许应用控制颜色模式。
对第三方应用不可用。
CONFIGURE_WIFI_DISPLAY签名-允许应用配置并连接到WiFi显示器。
CONFIRM_FULL_BACKUP签名-允许包启动安全完整备份确认UI。
确保只有系统可以绑定到它。
CONNECTIVITY_INTERNAL签名|专用-允许应用使用ConnectivityManager专用API。
CONNECTIVITY_USE_RESTRICTED_NETWORKS签名|专用-允许内部用户使用受限网络。
CONTROL_DISPLAY_BRIGHTNESS签名-允许应用控制系统亮度。
CONTROL_DISPLAY_SATURATION签名|专用-允许应用控制颜色饱和度。
CONTROL_INCALL_EXPERIENCE签名|专用-允许应用控制通话体验。
CONTROL_KEYGUARD

android权限大全

例子如短信权限:在AndroidMainfest里,</manifest>前加<uses-permission android:name="android.permission.SEND_SMS"/>

技术分享

以上是关于Android 权限:权限大全的主要内容,如果未能解决你的问题,请参考以下文章

Android 权限:权限大全

Android 权限大全

安卓的权限大全和动态使用安卓权限

Android权限大全(链接地址整理)

26.MTK Android 权限大全

Android权限(permission)大全

(c)2006-2024 SYSTEM All Rights Reserved IT常识