仅在默认处理程序中使用的权限

一些核心设备功能(例如读取通话记录和发送短信)依赖于访问敏感的用户数据。为了保护用户隐私并为用户提供更多控制权,让他们能够控制向设备上的应用提供的信息,Google Play 限制了应用访问与通话和消息相关的权限组。

如果您在 Google Play 商店分发您的应用并想访问与通话记录和短信相关的敏感用户数据,除非您的应用满足 Play 管理中心中出现的 例外情况 之一,否则您的应用需要注册为用户对与该权限相关的核心设备功能的默认处理程序。例如,要访问与通话相关的权限,您的应用需要注册为用户的默认电话或助理处理程序,除非您的应用满足例外情况。

本指南简要概述了用户如何在 Android 设备上访问默认处理程序。然后,本指南将回顾应用在有资格成为默认处理程序之前必须满足的要求。最后,本指南将引导您完成接收用户同意成为默认处理程序的过程。

要了解有关默认处理程序以及如何在 Play 商店中提供的应用中处理权限的更多信息,请 查看权限策略指南

查看和更改默认处理程序集

Android 允许用户为多个核心用例设置默认处理程序,例如拨打电话、发送短信和提供辅助技术功能。

Android 上的设置应用包含一个屏幕,显示哪些应用当前是设备核心功能的默认处理程序,如图 1 所示。在此屏幕上,用户可以更改给定功能的默认处理程序,如图 2 所示。

Screen capture of default apps settings
图 1. 显示设备上默认处理程序列表的系统设置屏幕。
Screen capture of default SMS app settings
图 2. 显示如何更改默认短信处理程序的系统设置屏幕。

遵循默认处理程序的要求

鉴于应用在充当默认处理程序时访问的敏感用户数据,除非您的应用满足以下 Play 商店列表和核心功能要求,否则您的应用无法成为默认处理程序。

  • 您的应用必须能够执行其作为默认处理程序的功能。例如,默认短信处理程序必须能够发送文本消息。
  • 您的应用必须提供隐私权政策。
  • 您的应用必须在 Play 商店说明中明确其核心功能。例如,默认电话处理程序应在其说明中描述其与电话相关的功能。
  • 您的应用必须声明与其用例相符的权限。有关您可以声明为给定处理程序的权限的更多详细信息,请参阅 Play 管理中心中关于 使用短信或通话记录权限组的指南
  • 您的应用必须在请求与成为该处理程序相关的权限之前请求成为默认处理程序。例如,应用必须在请求 READ_SMS 权限之前请求成为默认短信处理程序。

确保您的应用符合成为默认处理程序所需的每个要求后,您可以添加逻辑以显示图 3 中所示的对话框。此对话框会询问用户是否要将您的应用设置为特定用例的默认处理程序。

Screen capture showing a user-facing dialog
图 3. 提示用户是否要更改其设备的默认短信处理程序。

以下示例代码显示了显示提示(要求用户更改其设备的默认短信处理程序)所需的逻辑。

Kotlin

val setSmsAppIntent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
setSmsAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivityForResult(setSmsAppIntent, your-result-code)

Java

Intent setSmsAppIntent =
        new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
setSmsAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
        getPackageName());
startActivityForResult(setSmsAppIntent, your-result-code);