使用权限与使用 - 功能

Kev*_* L. 30 java android

我已经看到许多人询问的具体案例和人们解释两者之间的差异,但我不能也不会理解一般差异.这两个是同义词吗?一个人是否意味着另一个?

Com*_*are 50

这两个是同义词吗?

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

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

一个人是否意味着另一个?

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


Aya*_*fov 9

建议与... <uses-feature>一起使用<uses-permission>.您的应用程序的每个功能需要<uses-feature>使用属性android:required="false" ,如果你的应用程序可以在没有它的工作.这样做的原因是Google Play过滤掉了具有以编程方式实现但硬件不支持的功能的应用程序,因此您在那里看不到它们.

例如,您的应用具有权限的其他几个权限<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"/>
Run Code Online (Sandbox Code Playgroud)

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