在 Android 应用程序的 Manifest 文件中声明不相关的权限会产生什么后果?

问题描述

我为 WearOS 开发表盘。我试图通过创建一个包含我所有项目的通用代码的基本模块来模块化我的代码。除其他外,它应该包含负责应用内购买的代码。为此,我必须添加 <uses-permission android:name="com.android.vending.BILLING"/>。但是,有些项目没有应用内购买。因此,这些项目会继承 BILLING 权限,但实际上并不需要它。

所以我的问题是:

  • 有办法解决吗?像一种有条件地指定清单的方面的方法吗?
  • 如果我只是让这个 BILLING 权限进入,即使它不是必需的,会有什么后果?
  • 更一般地说,是否有更多“危险”权限可以在不需要时允许?

解决方法

有办法解决吗?像一种有条件地指定 Manifest 方面的方法吗?

我认为没有办法不declaring permissions in the manifest

如果我只是让这个 BILLING 权限进入,即使它不是必需的,会有什么后果?

如果是install-time permission,系统会自动授予。但如果是 runtime-permission,则必须在使用前在运行时请求权限。

因此,如果您声明不需要的权限,最好的情况是什么都不会发生。但我不太清楚这样做会引起什么样的安全问题。

请注意,在您的应用中请求不需要的权限是against good practice

注意:仔细考虑您在应用清单中声明的​​权限。仅添加您的应用所需的权限。对于您的应用请求的每项权限,请确保它为用户提供了明确的好处,并且请求的完成方式对他们来说是显而易见的。

另见this post

删除权限

您还可以考虑删除您在基本模块中声明的(子)模块中的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
,

上传应用时,您需要完成一个Permissions declaration,然后应用才能通过审核。您想要做的事情似乎与 Play 商店“Permissions policy”指南明确背道而驰:

您只能请求在 Play 商品详情中宣传的应用中实施当前功能或服务所需的权限。

鉴于此,我希望您的应用无法通过审核(或者如果它以某种方式第一次通过了审核,如果在稍后阶段被发现,可能会在未来的审核中失败)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...