Android 角色

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

如需了解可用角色及其相应要求,请参阅以下列表。

角色 要求
ASSISTANT 至少满足以下任一要求:
  • 应用具有一个 activity,根据用户在请求帮助时遭遇的具体情况执行帮助操作(例如,当前前台应用的软件包名称及其上下文信息)。
  • 应用具有始终开启的语音互动服务(受 android.permission.BIND_VOICE_INTERACTION 权限控制),能够执行语音识别并托管处于活动状态的语音互动会话。 此外,应用还具有指示服务能够处理帮助操作的显式标志。
BROWSER 须满足以下所有要求:
  • 应用具有一个 activity,并可通过隐式 intent 请求调用该 activity,以显示与 http:// 地址对应的网页。
  • 应用需要处理链接之间的导航。也就是说,如果用户正在查看网页并点击了文本中的 http:// 地址,则应用需要能够显示与所选链接对应的内容,而无需额外的用户干预。
  • 应用在收到请求并且用户批准该请求时,需要能够提供设备的当前地理定位信息。
DIALER 须满足以下所有要求:
  • 应用具有一个 activity,并可通过隐式 intent 请求调用该 activity,以在设备进行通话时提供通话中界面。
  • 应用可以处理来电 intent,向用户显示与来电相关的信息(例如来电者的电话号码),并允许用户接听或拒接来电。
  • 应用为用户提供在设备上拨打电话和查看通话记录的途径。
SMS 须满足以下所有要求:
  • 应用满足短信应用的所有要求
  • 应用具有一个 activity,并可通过隐式 intent 请求调用该 activity,以向某个电话号码发送消息。
  • 应用具有一项服务,该服务受 android.permission.SEND_RESPOND_VIA_MESSAGE 权限控制,并且可通过隐式 intent 调用,确保如果用户在来电期间选择通过消息回复,可以回复“电话”应用中收到的消息。应用可以通过自己的消息传递系统发送消息。
  • 应用有两个广播接收器,其中一个受 android.permission.BROADCAST_SMS 权限控制,另一个受 android.permission.BROADCAST_WAP_PUSH 权限控制,以分别监听发送到设备的短信和彩信。然后,应用负责将消息写入短信提供程序并通知用户。
EMERGENCY 须满足以下所有要求:
  • 应用属于系统应用
  • 应用具有一个用于呈现用户的急救信息的 activity。 任何人都可以通过紧急拨号器 activity 上的“紧急呼叫”按钮找到此屏幕。
HOME 应用具有一个 activity,可在用户按主屏幕按钮时启动主屏幕。主屏幕应显示应用图标、widget,并支持基于按钮或手势的导航(例如,向上滑动以查看所有应用)。
CALL_REDIRECTION 应用具有一项受 android.permission.BIND_CALL_REDIRECTION_SERVICE 权限控制的服务,Telecom 框架可以绑定该服务。该服务从 Telecom 框架接收外拨电话号码,并执行以下操作之一:
  • 允许按原样拨打电话。
  • 更改外拨号码,以通过代理号码路由。
  • 取消呼叫。
CALL_SCREENING 应用具有一项受 android.permission.BIND_SCREENING_SERVICE 权限控制的服务,该服务可执行两项功能:
  1. 来电屏蔽/过滤:该服务可以选择将哪些来电发送到手机上的拨号器应用(并可能会响铃,视勿扰模式/音量高低而定),以及将哪些来电以静默方式发送至语音信箱。
  2. 来电识别:该服务可以通过界面识别并显示来电相关信息。
SYSTEM_GALLERY 须满足以下所有要求:
  • 应用属于系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 应用提供一个界面,供用户存储、整理和显示其视频和图片。
SYSTEM_AUTOMOTIVE_CLUSTER 须满足以下所有要求:
  • 应用是 Automotive 上的系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 应用提供汽车仪表板显示屏(通常位于方向盘旁边)的功能,供用户接听来电以及访问联系人列表和通话记录。
COMPANION_DEVICE_WATCH 应用可以发出请求以与手表设备相关联和管理手表设备(通过使用 CompanionDeviceManager 类提供的 API)。通过应用提供的界面连接手表和应用后,用户就可以通过应用管理手表,包括同步联系人和日历,以及管理通知和通话。
SYSTEM_AUTOMOTIVE_PROJECTION 须满足以下所有要求:
  • 应用属于系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 应用可以将手机屏幕投影到车载显示屏上,让司机可以使用车辆支持的输入机制(包括轻触、方向盘控件和语音指令)访问和控制 Android 手机上的应用,包括音乐、导航、通话和 Google 搜索。
SYSTEM_SHELL 须满足以下所有要求:
  • 应用是分配了 Process.SHELL_UID UID 的系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 应用提供一个在命令行级别工作的界面,以便用户与 Android OS 互动。例如,显示文件夹的内容或启动应用。shell 命令可以由应用以编程方式执行(获得必要的权限后)或通过 adb 工具执行。
SYSTEM_CONTACTS 须满足以下所有要求:
  • 应用属于系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 应用为用户提供一个界面,供用户管理其联系人(例如,查看、分享、添加、移除或搜索联系人)。用户在应用中更新联系人时,应用会更新联系人提供程序。用户还可以通过应用呼叫联系人,向其发送电子邮件或短信。
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 才能向应用授予此角色。
  • 应用必须能够检测其附近的外围设备。它必须具有一个界面,以便用户能够确认给定的外围设备将与应用相关联并由应用管理。用户确认后,该应用会授予访问外围设备(例如,其名称、地址、类和绑定状态)的关联应用权限,并可以启动绑定流程。
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 或系统 API)为系统界面功能提供设备端智能处理器(例如,为用户预测和显示其他应用)。
  • 该服务必须满足 Android CDD 第 9.8.6 节:内容捕获列出的所有要求。
  • 它不能具有 android.permission.INTERNET 权限。相反,它必须通过开源项目中明确定义的 API 访问互联网。
  • 它不得绑定到其他应用,但以下系统应用除外:蓝牙、通讯录、媒体、电话、系统界面以及提供互联网 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 才能向应用授予此角色。
  • 应用可以创建和管理与已连接的设备的通信信道,以便两者可以交换数据。应用和已连接的设备必须互相成功进行身份验证(例如,通过证明自己知道共享密钥),建立这些通信通道。 通信信道必须采用加密保护措施。
  • 应用可以从本地设备向已连接的设备发送通知,并允许用户在已连接的设备上对通知执行操作。
  • 能够将流式传输应用所需的元数据(例如本地设备上的可用应用列表)流式传输到已连接的设备。
  • 在用户表示相应意愿并获得其明确同意后,能够将应用从本地设备流式传输到已连接的设备(手机或已连接的设备)上。
  • 能够将已连接设备上流式传输后获得的应用中发生的事件重放(注入)回本地设备。例如,按手机上的相同坐标在平板电脑上重放触摸事件。
  • 当流式传输后获得的应用使用麦克风时,应用可将本地设备的麦克风输入流替换为已连接设备的麦克风输入流。
  • 应用从设备捕获音频并将其流式传输到已连接的设备。
  • 当流式传输后获得的应用使用相机时,必须屏蔽本地设备的相机数据流。
  • 必须验证已连接设备 OS build 的完整性(例如,使用设备认证功能,就像在 VerifiedBootState 中那样)。
  • 仅当两部设备的设备端账号注册表(例如 Android 上的 AccountManager)中都只有一个相匹配的账号时,才能流式传输应用。如果不是这样,则必须通过在源设备上显示一次性验证码并在已连接的设备上输入该码来授权流式传输。请注意,如果设备支持具有相同的数据隔离保证的多用户功能(像 Android 多用户中那样,且并非多账号),那么一个用户将计为一部设备。
  • 如果已连接设备上账号的身份验证过期或被撤消,则必须立即停止流式传输并断开与已连接设备的连接。
  • 在流式传输之前和期间,必须验证已连接的设备是否在本地设备的蓝牙范围内。
  • 如果用户 5 分钟未与已连接的设备互动(例如,键盘、触摸屏和鼠标处于非活跃状态),必须断开正在进行的应用流式传输会话。视频串流应用不受此要求的约束。
  • 如果源设备使用锁屏验证凭据 (LSKF),那么当屏幕处于锁定状态时,应用不得将应用流式传输到已连接的设备,除非该设备具有锁定屏幕设置并已解锁。
  • 如果设备由管理员管理,应用必须遵守管理员制定的关于启用或停用向附近设备流式传输应用的政策(例如,使用 Android 中的 DevicePolicyManager 设置)。
  • 必须确保远程显示屏和远程输入事件的所有来源从用户的角度来看都属于同一逻辑设备(例如,一部远程显示屏和一个已连接的键盘),并且系统已相应地传送事件。
  • 用户必须能够从本地设备上(例如通过使用常驻通知中的按钮)结束流式传输。如果手机设置了屏幕锁定,此行为受锁屏限制。
  • 当流式传输正在另一设备上进行时,必须在源设备上显示一种可用方式,例如状态栏中的图标或常驻通知。
DEVICE_POLICY_MANAGEMENT 须满足以下所有要求:
  • 只有 OEM 才能向应用授予此角色。应用无法请求此角色,因为它需要在设备出厂时开箱授予由 OEM 定义的软件包名称。
  • 应用必须能够配置受管理资料(资料所有者)或受管理设备(设备所有者),包括在需要时下载/安装适当的 Device Policy Client 作为设备/资料所有者。
  • 应用可以选择动态更新资源,例如用于管理设备政策的字符串、可绘制对象。
  • 应用可能是预安装的系统应用,您也可能是在配置之前下载并安装应用。
  • 对于资料所有者配置情况,当角色持有者应用安装到给定 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 设备必须将此日历数据存储在日历提供程序中。
  • 应用必须在手机上提供一个界面组件,供用户用于开启日历同步功能并选择要同步的日历。应用必须在手机上提供一个界面组件,供用户用于关闭日历同步功能。
  • 应能在未连接到互联网的情况下正常运行。例如,使用有线直连或无线连接。
AUTOMOTIVE_NAVIGATION 须满足以下所有要求:
  • 应用具有一个 activity,并可通过隐式 intent 请求调用该 activity,以显示用户的当前位置和周围环境。
  • 应用具有一个 activity,并可通过隐式 intent 请求调用该 activity,让用户可以导航到指定的地理位置。
  • 具有一个 activity,应用包含导航焦点时在仪表板上启动该 activity。 该 activity 必须显示用户的当前位置、周围环境,让用户可以导航到指定的地理位置。
COMPANION_DEVICE_COMPUTER 须满足以下所有要求:
  • 应用属于系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 让用户通过已连接的计算机镜像手机上的通知、访问手机上的照片和媒体内容。
SYSTEM_SETTINGS_INTELLIGENCE 至少满足以下任一要求:
  • 应用属于系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 具有一项服务,为“设置”应用提供智能功能,如建议和搜索。
备注 须满足以下所有要求:
COMPANION_DEVICE_GLASSES 应用可以发出请求以与眼镜设备相关联和管理眼镜设备(通过使用 CompanionDeviceManager 类提供的 API)。一旦使用 CDM 提供的界面连接眼镜设备和应用,用户就可以向眼镜设备授予通讯录访问权限以及通知和手机通话管理权限,以便管理眼镜设备。
COMPANION_DEVICE_NEARBY_DEVICE_STREAMING 须满足以下所有要求:
  • 应用属于系统应用
  • 只有 OEM 才能向应用授予此角色。
  • 应用可以创建和管理与已连接的设备的通信信道,以便设备可以交换数据。应用和已连接的设备必须互相成功进行身份验证(例如,通过证明自己知道共享密钥),建立这些通信通道。 通信信道必须采用加密保护措施。
  • 应用可以从本地设备向已连接的设备发送通知,并允许用户在已连接的设备上对通知执行操作。
  • 能够将流式传输应用所需的元数据(例如本地设备上的可用应用列表)流式传输到已连接的设备。
  • 在用户表示相应意愿并获得其明确同意后,能够将应用从本地设备流式传输到已连接的设备(手机或已连接的设备)上。
  • 能够将已连接设备上流式传输后获得的应用中发生的事件重放(注入)回本地设备。例如,按手机上的相同坐标在平板电脑上重放触摸事件,或使用与手机上相同的输入语义重放眼镜设备上发生的输入事件。
  • 当流式传输后获得的应用使用麦克风时,应用可将本地设备的麦克风输入流替换为已连接设备的麦克风输入流。
  • 应用从设备捕获音频并将其流式传输到已连接的设备。
  • 必须验证已连接设备 OS build 的完整性(例如,使用设备认证功能,就像在 VerifiedBootState 中那样)。
  • 仅当两部设备的设备端账号注册表(例如 Android 上的 AccountManager)中都只有一个相匹配的账号时,才能流式传输应用。如果不是这样,则必须通过在源设备上显示一次性验证码并在已连接的设备上输入该码来授权流式传输。请注意,如果设备支持具有相同的数据隔离保证的多用户功能(像 Android 多用户中那样,且并非多账号),那么一个用户将计为一部设备。
  • 如果已连接设备上账号的身份验证过期或被撤消,则必须立即停止流式传输并断开与已连接设备的连接。
  • 如果源设备使用锁屏验证凭据 (LSKF),那么当屏幕处于锁定状态时,应用不得将应用流式传输到已连接的设备,除非该设备具有锁定屏幕设置并已解锁。
  • 如果设备由管理员管理,应用必须遵守管理员制定的关于启用或停用向附近设备流式传输的政策(例如,使用 Android 中的 DevicePolicyManager 设置)。
  • 必须确保远程显示屏和远程输入事件的所有来源从用户的角度来看都属于同一逻辑设备(例如,一部远程显示屏和一个已连接的键盘),并且系统已相应地传送事件。
  • 用户必须能够从本地设备上(例如通过使用常驻通知中的按钮)结束流式传输。如果手机设置了屏幕锁定,此行为受锁屏限制。
  • 当流式传输正在另一设备上进行时,必须在源设备上显示一种可用方式,例如状态栏中的图标或常驻通知。