返回

Android 8.0 隐式意图和自定义签名权限: 对开发者造成的影响及解决方案

Android

Android 8.0 隐式意图和自定义签名权限

引言

Android 8.0 (Oreo) 引入了多项安全增强功能,其中包括对隐式意图和自定义签名权限的更改。这些更改旨在提高设备安全性,但也给开发人员带来了挑战。本文将探讨这些更改的影响,并提供应对这些更改的解决方案。

什么是隐式意图?

隐式意图是一种 Android 意图,不指定要启动的特定组件(例如活动、服务或广播接收器)。相反,它仅指定操作(例如查看 URL 或拨打电话)和要处理操作所需的数据。系统会负责查找可以处理操作的最佳组件。

什么是自定义签名权限?

自定义签名权限允许应用程序声明它们要求的特定权限,这些权限由应用程序自己的签名密钥签名。这与以前的方法不同,以前的方法是应用程序将权限声明为设备上所有应用程序都可用的系统权限的一部分。

Android 8.0 中的更改

隐式意图

在 Android 8.0 中,系统将更加严格地限制对隐式意图的使用。如果应用程序尝试启动隐式意图,而目标组件不在清单中的意图过滤器中显式声明,则系统将抛出异常。

自定义签名权限

在 Android 8.0 中,不再允许应用程序声明自定义签名权限。所有权限现在都必须通过系统权限声明。

对开发者的影响

这些更改对开发人员有以下影响:

  • 应用程序可能无法再使用隐式意图启动其他应用程序中的组件。
  • 应用程序可能无法再请求自定义签名权限。

解决方案

隐式意图

为了解决隐式意图的限制,开发人员可以采取以下措施:

  • 在清单中显式声明所有意图过滤器: 确保所有隐式意图的目标组件都已在应用程序清单的意图过滤器中显式声明。
  • 使用显式意图: 改用显式意图,明确指定要启动的组件。

自定义签名权限

为了解决自定义签名权限的限制,开发人员可以采取以下措施:

  • 迁移到系统权限: 将应用程序所需的权限迁移到系统权限。
  • 使用动态权限请求: 使用动态权限请求 API 在运行时请求权限。

结论

Android 8.0 中对隐式意图和自定义签名权限的更改旨在提高设备安全性,但也给开发人员带来了挑战。通过采取本文中概述的解决方案,开发人员可以确保他们的应用程序在 Android 8.0 及更高版本上继续平稳运行。

其他资源