使用权限与使用功能

IT小君   2022-01-11T06:39:15

我见过很多人询问和解释两者之间区别的具体案例,但我不能也似乎不理解一般的区别。两者是同义词吗?一个是否暗示另一个?

评论(2)
IT小君

两者是同义词吗?

没有。<uses-permission>说“嘿,Android(和相关的分销渠道),请让用户允许我做 X”。<uses-feature>说“嘿,Android(和相关的分销渠道),我有兴趣在具有 Y 功能的硬件上运行”。

<uses-feature> 如果硬件不符合您的要求,但用户不参与,可能会将您过滤出 Play 商店(和其他渠道)。

一个是否暗示另一个?

有时。如果您请求某些权限,例如CAMERA,Android 默认假定您需要相应的硬件如果需要,您可以使用<uses-feature>andandroid:required="false"覆盖该默认行为。

2022-01-11T06:39:15   回复
IT小君

建议<uses-feature>搭配使用<uses-permission>如果您的应用可以在没有它的情况下运行,那么您的应用的每个功能都需要<uses-feature>带有属性这样做的原因是 Google Play 会过滤掉具有以编程方式实现但不受硬件支持的功能的应用程序,因此您看不到它们。android:required="false"

例如,在其他几个权限中,您的应用程序有一个权限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>如果有没有 GPS 功能的设备,则此设备将不会在 Google Play 中看到此应用。如果您的应用程序在没有 GPS 连接的情况下完全正常运行,那么解决方案是添加:

<uses-feature android:name="android.hardware.location" android:required="false"/> 
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false"/>

因此,正如@CommonsWare 已经提到的那样,它<uses-feature>覆盖了默认行为<uses-permission>

2022-01-11T06:39:16   回复