使用权限与使用 - 功能

时间:2015-01-22 00:33:25

标签: java android

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

2 个答案:

答案 0 :(得分:46)

  

这两个是同义词吗?

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

如果硬件不符合您的要求,

<uses-feature>可能会将您过滤掉Play商店(和其他渠道),但用户并未参与其中。

  

是否有人暗示对方?

有时。 If you request certain permissions, like CAMERA, Android assumes by default that you need the corresponding hardware。如果需要,您可以使用<uses-feature>android:required="false"覆盖默认行为。

答案 1 :(得分:6)

建议<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"/>

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