我已经看到许多人询问的具体案例和人们解释两者之间的差异,但我似乎无法理解一般差异。这两个是同义词吗?一个人是否意味着另一个?
答案 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>
的默认行为