Android 角色

角色是系统中与特定权限和特权关联的唯一名称。应用可以通过 Android API 请求担任某些角色,具体而言,是通过调用 RoleManager 类中的方法来请求。

请参阅以下列表,了解可用角色及其对应的要求

角色 要求
ASSISTANT 至少满足以下条件之一
  • 应用具有一项 Activity,当用户请求协助时(例如,当前前台应用及其上下文信息的软件包名称),该 Activity 会根据用户上下文信息执行辅助操作。
  • 应用具有一个始终开启的语音互动服务,该服务由 android.permission.BIND_VOICE_INTERACTION 权限控制,可以执行语音识别并托管主动语音互动会话。此外,应用还具有一个显式标记,指示该服务能够处理辅助操作。
BROWSER 全部满足以下条件
  • 应用具有一项 Activity,应用可以通过隐式 intent 请求调用该 Activity,该 Activity 会显示与 http:// 地址对应的网页。
  • 应用需要处理链接之间的导航。也就是说,如果用户正在查看网页并点击文本中的 http:// 地址,则应用需要能够显示与所选链接对应的内容,而无需用户进行其他干预。
  • 当网页请求且用户批准请求时,应用需要能够向网页提供设备的当前地理位置信息。
DIALER 全部满足以下条件
  • 应用具有一项 Activity,应用可以通过隐式 intent 请求调用该 Activity,该 Activity 会在设备通话时提供通话中的用户界面。
  • 应用可以处理来电 intent,向用户显示与通话相关的信息(例如,来电者的电话号码),并让用户接听或拒绝来电。
  • 应用为用户提供一种在其设备上发起通话和查看通话记录的方式。
SMS 全部满足以下条件
  • 应用满足短信应用的所有要求
  • 应用具有一项 Activity,应用可以通过隐式 intent 请求调用该 Activity,该 Activity 可以向电话号码发送消息。
  • 应用具有一项由 android.permission.SEND_RESPOND_VIA_MESSAGE 权限控制且可由隐式 intent 调用的服务,当用户在来电期间选择“通过消息回复”时,该服务可以传递从电话应用收到的消息。应用可以通过其自己的消息传递系统传递消息。
  • 应用具有两个广播接收器,一个由 android.permission.BROADCAST_SMS 权限控制,另一个由 android.permission.BROADCAST_WAP_PUSH 权限控制,这两个广播接收器可以分别侦听发送到设备的基于文本的短信和彩信消息。然后,应用负责将消息写入短信提供程序并通知用户。
EMERGENCY 全部满足以下条件
  • 该应用是一个 系统应用
  • 应用具有一项 Activity,可显示用户的紧急信息。任何人都可以通过紧急拨号器 Activity 上的“紧急呼叫”按钮导航到此屏幕。
HOME 该应用有一个 Activity,当用户按下 Home 按钮时可以启动主屏幕。主屏幕应显示应用图标、小部件,并支持基于按钮或手势的导航(例如,向上滑动以查看所有应用)。
CALL_REDIRECTION 该应用有一项受 android.permission.BIND_CALL_REDIRECTION_SERVICE 权限保护的服务,电信框架可以绑定到该服务。该服务从电信框架接收外拨电话号码,并执行以下操作之一
  • 允许按原样拨打电话。
  • 更改外拨号码以通过代理号码路由。
  • 取消通话。
CALL_SCREENING 该应用有一项受 android.permission.BIND_SCREENING_SERVICE 权限保护的服务,该服务执行两项功能
  • 来电阻止和过滤: 该服务可以选择哪些来电应发送到手机上的拨号器应用(并可能响铃,如果 DND 或音量允许),哪些来电应静默发送到语音信箱。
  • 来电识别: 该服务可以通过用户界面识别和显示有关来电的信息。
SYSTEM_GALLERY 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用提供了一个 UI,供用户存储、整理和显示他们的视频和图像。
SYSTEM_AUTOMOTIVE_CLUSTER 全部满足以下条件
  • 该应用是 Automotive 上的系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用为车载仪表盘显示器(通常与方向盘相邻)提供功能,供用户接听电话和访问联系人列表及通话记录。
COMPANION_DEVICE_WATCH 该应用可以请求与手表设备关联并管理手表设备(通过使用 CompanionDeviceManager 类提供的 API)。当手表和应用通过应用提供的 UI 连接后,用户可以通过该应用管理他们的手表,包括同步联系人和日历,以及管理通知和电话。
SYSTEM_AUTOMOTIVE_PROJECTION 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用使手机屏幕能够投影到车载显示屏上。它允许驾驶员使用车辆上的输入机制(包括触摸、方向盘控件和语音命令)访问和控制 Android 手机上的应用,包括音乐、导航、电话和搜索。
SYSTEM_SHELL 全部满足以下条件
  • 该应用是系统应用,被分配了 Process.SHELL_UID UID。
  • 只有 OEM 才能授予应用此角色。
  • 该应用提供了一个在命令行级别工作的界面,以便用户可以与 Android 操作系统交互。例如,显示文件夹的内容或启动应用。Shell 命令可以由应用以编程方式执行(如果已授予必要的权限),也可以从 ADB 工具执行。
SYSTEM_CONTACTS 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用提供了一个 UI,供用户管理他们的联系人(例如,查看、共享、添加、删除或搜索联系人)。当用户从应用更新他们的联系人时,该应用会更新联系人提供程序。用户还可以从该应用拨打电话、发送电子邮件或发送短信给他们的联系人。
SYSTEM_SPEECH_RECOGNIZER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用提供了一项可以执行语音识别的服务。
  • 当应用从另一个应用接收实时麦克风流以进行语音识别时,它会正确地将麦克风使用情况归因于调用应用,并相应地更新应用操作统计信息。
SYSTEM_WIFI_COEX_MANAGER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用有一项服务,可以动态设置设备应避免使用的 Wi-Fi 信道列表,原因是蜂窝网络干扰。
SYSTEM_WELLBEING 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用应提供使用户能够减少干扰的功能,并向用户提供有关他们如何使用设备(例如,每周屏幕使用时间)的统计信息。
SYSTEM_TELEVISION_NOTIFICATION_HANDLER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用必须在电视设备上向用户显示浮动通知。当发送 android.app.action.TOGGLE_NOTIFICATION_HANDLER_PANEL intent(从 SystemUI 发送)时,该应用还必须显示当前活动的通知。
SYSTEM_COMPANION_DEVICE_PROVIDER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用必须能够检测附近的外围设备。它必须有一个 UI,用户可以在其中确认给定的外围设备应与应用关联并由应用管理。当用户确认后,管理应用会授予关联应用访问外围设备的权限(例如,其名称、地址、类别和绑定状态),并且它可以启动绑定过程。
SYSTEM_DOCUMENT_MANAGER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用有一个 Activity,允许用户访问设备上现有的文档并创建新文档。
  • 该应用必须满足 Android CDD 第 2.2.3. 软件 节中 [3.2.3.1/H-0-1] 标题下的所有要求。
SYSTEM_ACTIVITY_RECOGNIZER 全部满足以下条件
SYSTEM_UI 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用有一个界面供用户与他们的手机互动。例如,手机的主屏幕、导航、最近使用的应用、快捷设置、通知栏、锁屏、音量控制。
SYSTEM_TELEVISION_REMOTE_SERVICE 全部满足以下条件
  • 该应用是 Android TV 上的系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用有一项服务,可以与电视遥控器 HID 设备(例如,通过 BLE)通信,注入事件(例如,按钮点击),并将其他数据(例如,来自遥控器内置麦克风的音频流)发送到平台。
SYSTEM_UI_INTELLIGENCE 全部满足以下条件
  • 作为预安装服务,通过框架 API(公共或系统 API)为系统 UI 功能提供设备上的智能处理器(例如,预测和显示用户的下一个应用)。
  • 该服务必须满足 Android CDD 第 9.8.6 内容捕获 节中概述的所有要求。
  • 该服务不能具有 android.permission.INTERNET 权限。相反,它必须通过开源项目中明确定义的 API 访问互联网。
  • 该服务不能绑定到应用,但以下系统应用除外:蓝牙、联系人、媒体、电话、SystemUI 以及提供互联网 API 的组件。每个允许的绑定都必须通过系统配置中的 <allow-association> 配置显式设置。
  • 该服务不能与应用共享数据,除非有直接的用户操作(例如,用户每次共享数据时都明确按下按钮)。
SYSTEM_AMBIENT_AUDIO_INTELLIGENCE 全部满足以下条件
  • SYSTEM_UI_INTELLIGENCE 的条件相同,只是预安装服务为环境音频提供设备上的智能处理器(例如,识别设备附近播放的歌曲)。
SYSTEM_AUDIO_INTELLIGENCE 全部满足以下条件
  • SYSTEM_UI_INTELLIGENCE 的条件相同,只是预安装服务为音频提供设备上的智能处理器(例如,为视频、播客、电话、视频通话和音频消息添加字幕)。
SYSTEM_NOTIFICATION_INTELLIGENCE 全部满足以下条件
  • SYSTEM_UI_INTELLIGENCE 的条件相同,只是预安装服务为通知提供设备上的智能处理器(例如,为消息通知建议回复和操作)。
SYSTEM_TEXT_INTELLIGENCE 全部满足以下条件
  • SYSTEM_UI_INTELLIGENCE 的条件相同,只是预安装服务为文本提供设备上的智能处理器(例如,提供实时翻译或自动填充)。
SYSTEM_VISUAL_INTELLIGENCE 全部满足以下条件
  • SYSTEM_UI_INTELLIGENCE 的条件相同,只是预安装服务为涉及分析相机数据的视觉功能提供设备上的智能处理器。例如,在用户看着手机屏幕时保持屏幕常亮,或根据设备前置摄像头中用户的面部方向确定理想的屏幕方向。
COMPANION_DEVICE_APP_STREAMING 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 从 Android 15 开始
    从设备 A 到设备 B 建立初始连接时
    两个设备都必须在其 AccountManager 中至少有一个匹配的帐户,并且配对必须通过一次性代码确认。
    • 用户必须在配对设备时在辅助远程设备上确认帐户密码,或者,
    • 一次性代码必须显示在源设备上,并在连接的设备上输入。
    • 流式传输期间没有范围要求。

    或者,设备 A 和设备 B 必须在彼此的蓝牙范围内,并且流式传输必须通过一次性代码授权。
    • 一次性代码显示在源设备上,并在连接的设备上输入。
    • 设备在流式传输期间必须保持在彼此的蓝牙范围内。
  • 该应用可以创建和管理与连接设备的通信信道,以便它们可以交换数据。该应用和连接的设备必须成功地相互验证(例如,通过证明他们知道共享密钥)才能建立这些通信信道。通信信道必须具有加密保护。
  • 该应用可以将来自本地设备的通知发送到连接的设备,以便用户可以在连接的设备上对通知采取操作。
  • 能够将应用流式传输所需的元数据流式传输到连接的设备,例如本地设备上可用的应用列表。
  • 在用户明确同意(在手机上或在连接的设备上)表明他们的偏好后,能够将应用从本地设备流式传输到连接的设备。
  • 能够将连接设备上流式传输的应用上发生的事件在本地设备上重放(注入)。例如,在平板电脑上重放触摸事件,其坐标与手机上的坐标相同。
  • 当流式传输的应用正在使用麦克风时,该应用可以用连接设备的麦克风流替换本地设备的麦克风流。
  • 该应用从设备捕获音频并将其流式传输到连接的设备。
  • 当流式传输的应用正在使用相机时,必须阻止本地设备的相机流。
  • 必须验证连接设备的操作系统构建的完整性(例如,通过使用设备证明,如 VerifiedBootState 中所示)。
  • 仅流式传输两个设备上的设备上帐户注册表(例如,Android 上的 AccountManager 类)中只有一个匹配帐户的应用。如果不是这种情况,则必须通过一次性代码授权流式传输,该代码显示在源设备上,并在连接的设备上输入。请注意,对于支持具有与 Android 多用户 中相同的可靠数据隔离的多用户(而不是多帐户)的设备,用户算作一个设备。
  • 如果连接设备上帐户的身份验证过期或被撤销,则必须立即停止流式传输并断开与连接设备的连接。
  • 如果用户在 5 分钟内没有与连接的设备交互(例如,键盘、触摸屏和鼠标处于非活动状态),则必须断开正在进行的应用流式传输会话。视频流式传输应用不受此要求限制。
  • 从 Android 15 开始
    必须在显示内容可见的远程设备上的空闲超时后断开所有虚拟设备的连接。对于诸如 WakeLock 之类的保持 Android 设备屏幕常亮的情况,可以保持远程设备屏幕常亮。必须存在空闲超时。如果远程设备本身没有空闲超时,则必须使用最多 5 分钟的空闲超时。
  • 如果源设备使用锁屏知识因子 (LSKF),当屏幕锁定时,应用不得将应用流式传输到连接的设备,除非该设备具有锁屏并已解锁。
  • 如果设备由管理员管理,则应用必须遵守管理员设置的关于启用或禁用向附近设备流式传输应用的策略(例如,使用 Android 中的 DevicePolicyManager 设置)。
  • 必须确保远程显示器和所有远程输入事件源属于同一逻辑设备(例如,远程显示器和连接的键盘),并且事件相应地路由。
  • 用户必须能够从本地设备结束流式传输,例如,通过使用持久性通知中的按钮。如果手机设置了屏幕锁定,则此行为受锁屏控制。从 Android 15 开始,必须在本地设备上显示此持久性功能,该功能始终可见且位于首屏。
  • 当流式传输在另一台设备上发生时,必须在源设备上显示一个功能,例如状态栏中的图标或持久性通知。
DEVICE_POLICY_MANAGEMENT 全部满足以下条件
  • 只有 OEM 才能授予应用此角色。应用不能请求此角色,因为它旨在在设备发货时开箱即用地授予 OEM 定义的软件包名称。
  • 该应用必须能够配置托管配置文件(配置文件所有者)或托管设备(设备所有者),包括下载和安装适当的设备策略客户端以成为设备/配置文件所有者(如果需要)。
  • 该应用可以选择动态更新资源,例如用于设备策略管理的字符串、可绘制对象。
  • 该应用可以是预安装的系统应用,也可以在配置之前下载和安装。
  • 对于配置文件所有者配置案例,当角色持有者应用安装在给定的Android 用户上时,它必须安装在该用户的所有适用配置文件上。
SYSTEM_APP_PROTECTION_SERVICE 全部满足以下条件
  • 该应用是一个 系统应用
  • 该应用的唯一目的是检测潜在有害的应用(可能使用户、用户数据或设备面临风险的应用,例如木马、网络钓鱼和间谍软件应用)或 移动恶意软件
  • 该应用必须满足 Android CDD 第 9.8.6. 操作系统级别和环境数据 节中概述的所有要求。
  • 该应用不得声明 android.permission.INTERNET 普通权限。相反,它必须通过开源项目中明确定义的 API 访问互联网。
  • 该应用不得绑定到应用,但以下系统应用除外:权限控制器以及提供电话和互联网 API 的组件。每个允许的绑定都必须通过系统配置中的 <allow-association> 配置显式设置。
  • 该应用不得与应用共享数据,除非有直接的用户操作(例如,用户每次共享数据时都明确按下按钮)。
SYSTEM_AUTOMOTIVE_CALENDAR_SYNC_MANAGER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 该应用必须将日历数据从用户的 iOS 或 Android 手机传输到 Android Auto 设备。Android Auto 设备必须将此日历数据存储在 日历提供程序中。
  • 该应用必须在手机上提供一个 UI 组件,用户可以使用该组件打开日历同步并选择要同步的日历。该应用必须在手机上提供一个 UI 组件,用户可以使用该组件关闭日历同步。
  • 该应用应在没有互联网连接的情况下运行。例如,通过使用直接有线或无线连接。
AUTOMOTIVE_NAVIGATION 全部满足以下条件
  • 该应用有一个 Activity,应用可以通过隐式 intent 请求调用该 Activity,该 Activity 显示用户的当前位置和周围环境。
  • 该应用有一个 Activity,应用可以通过隐式 intent 请求调用该 Activity,该 Activity 允许用户导航到指定的地理位置。
  • 当应用持有 导航焦点 时,该应用有一个在仪表盘上启动的 Activity。该 Activity 必须显示用户的当前位置、周围环境,并允许他们导航到指定的地理位置。
COMPANION_DEVICE_COMPUTER 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 使用户能够在连接的计算机上镜像通知并访问手机中的照片和媒体。
SYSTEM_SETTINGS_INTELLIGENCE 至少满足以下条件之一
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 具有一项为“设置”应用提供智能功能的服务,例如建议和搜索。
NOTES 全部满足以下条件
COMPANION_DEVICE_GLASSES 该应用可以请求与眼镜设备关联并管理眼镜设备(通过使用 CompanionDeviceManager 类提供的 API)。当眼镜设备和应用使用 CDM 提供的 UI 连接后,用户可以通过授予眼镜设备访问联系人以及管理通知和电话的权限来管理他们的眼镜设备。
COMPANION_DEVICE_NEARBY_DEVICE_STREAMING 全部满足以下条件
  • 该应用是一个 系统应用
  • 只有 OEM 才能授予应用此角色。
  • 从 Android 15 开始
    从设备 A 到设备 B 建立初始连接时
    两个设备都必须在其 AccountManager 中至少有一个匹配的帐户,并且配对必须通过一次性代码确认。
    • 用户必须在配对设备时在辅助远程设备上确认帐户密码,或者,
    • 一次性代码必须显示在源设备上,并在连接的设备上输入。
    • 流式传输期间没有范围要求。

    或者,设备 A 和设备 B 必须在彼此的蓝牙范围内,并且流式传输必须通过一次性代码授权。
    • 一次性代码显示在源设备上,并在连接的设备上输入。
    • 设备在流式传输期间必须保持在彼此的蓝牙范围内。
  • 该应用可以创建和管理与连接设备的通信信道,以便设备可以交换数据。该应用和连接的设备必须成功地相互验证(例如,通过证明他们知道共享密钥)才能建立这些通信信道。通信信道必须具有端到端加密保护。
  • 该应用可以将来自本地设备的通知发送到连接的设备,以便用户可以在连接的设备上对通知采取操作。
  • 能够将应用流式传输所需的元数据流式传输到连接的设备,例如本地设备上可用的应用列表。
  • 在用户明确同意(在手机上或在连接的设备上)表明他们的偏好后,能够将应用从本地设备流式传输到连接的设备。
  • 能够将连接设备上流式传输的应用上发生的事件在本地设备上重放(注入)。例如,在平板电脑上重放触摸事件,其坐标与手机上的坐标相同,或者重放眼镜设备上发生的输入事件,其输入语义与手机上的输入语义相同。
  • 当流式传输的应用正在使用麦克风时,该应用可以用连接设备的麦克风流替换本地设备的麦克风流。
  • 该应用从设备捕获音频并将其流式传输到连接的设备。
  • 必须验证连接设备操作系统构建的完整性(例如,通过使用设备证明,如 VerifiedBootState 中所示)。
  • 仅流式传输两个设备上的设备上帐户注册表(例如,Android 上的 AccountManager 类)中只有一个匹配帐户的应用。如果不是这种情况,则必须通过一次性代码授权流式传输,该代码显示在源设备上,并在连接的设备上输入。请注意,对于支持具有与 Android 多用户 中相同的可靠数据隔离的多用户(而不是多帐户)的设备,用户算作一个设备。
  • 如果连接设备上帐户的身份验证过期或被撤销,则必须立即停止流式传输并断开与连接设备的连接。
  • 如果源设备使用 LSKF,当屏幕锁定时,应用不得将应用流式传输到连接的设备,除非该设备具有锁屏并已解锁。
  • 如果设备由管理员管理,则应用必须遵守管理员设置的关于启用或禁用向附近设备流式传输的策略(例如,使用 Android 中的 DevicePolicyManager 设置)。
  • 必须确保远程显示器和所有远程输入事件源属于同一逻辑设备(例如,远程显示器和连接的键盘),并且事件相应地路由。
  • 用户必须能够从本地设备结束流式传输,例如,通过使用持久性通知中的按钮。如果手机设置了屏幕锁定,则此行为受锁屏控制。
  • 当流式传输在另一台设备上发生时,必须在源设备上显示一个功能,例如状态栏中的图标或持久性通知。
WALLET 以下之一
  • 该应用具有一个 NFC APDU 服务,该服务在 PAYMENT 类别中静态注册至少一个 AID。
  • 该应用实现了 QuickAccessWalletService 的一个实例。