我的应用程序从手机收集诊断数据。当然,它需要像android.permission.ACCESS_WIFI_STATE
这样的权限来访问硬件。因此,Android假定android.hardware.WIFI
功能是必需的。尽管在大多数情况下这确实是一个有效的猜测,但在我的情况下,Wi-Fi并不是真正需要的正常操作。该应用程序检查实际存在的模块,如果Wi-Fi不在那里,它只会跳到下一个模块。为什么在AndroidManifest中声明为可选的特性仍然需要?
继文档,我在AndroidManifest宣布
<uses-feature android:required="false" android:name="android.hardware.WIFI"/>
。不幸的是,它不能按预期工作!该功能仍按要求列出。
这里是豁免aapt
检查。
uses-feature-not-required: name='android.hardware.WIFI'
uses-feature: name='android.hardware.wifi'
uses-implied-feature: name='android.hardware.wifi' reason='requested android.permission.ACCESS_WIFI_STATE permission'
有谁知道如何使该功能是可选的:虽然我的声明有一个初步的效果,它立刻被许可重写?非常感谢你的帮助,伙计们!
UPDATE:解决方案
感谢CommonsWare的答案,这个问题的确在我的声明(捂脸)上的情况。
坏:
<uses-feature android:required="false" android:name="android.hardware.WIFI"/>
好:
<uses-feature android:required="false" android:name="android.hardware.wifi"/>
与下壳一切正常记录。
现在,最令人沮丧的是:我是如何以大写字母结尾的? - 我只是从Google Play列表中复制它。所以,大家,在那里检查时要小心。你通常做什么? - 您构建APK,将其上传到Google Play,然后检查版本/权限/功能 - NOPE,这就是陷阱!你在那里看到大写字母。不要因此而失望:)
这是一个真正的问题吗?我的意思是有没有WiFi的设备? – tyczj
Wi-Fi只是其中之一。该应用程序探测各种模块,例如GPS,Wi-Fi,蓝牙,NFC,键盘等。基本上,每一个可能的硬件。如果有的话,很少有装有*全部*的装置。拥有所有权限拖动关联的功能将缩小设备过滤器的大小,以便Play Store中的“支持:0设备”。 *那就是问题所在。 – JBM