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

一些核心设备功能,例如读取通话记录和发送短信,依赖于对敏感用户信息的访问。为了保护用户隐私并让用户更好地控制他们向设备上的应用提供的信息,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 Console 帮助中心的有关使用短信或通话记录权限组的指南
  • 您的应用程序必须在请求与作为该处理程序相关的权限之前请求成为默认处理程序。例如,应用程序必须在请求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);