android uses-feature导致设备在Android(安卓)Market搜不到你的应用
16lz
2021-01-26
这两天发现我们的应用在Android Market 上,有的手机搜索不到,原因是:
此应用只适用于具备相应功能的设备
然后后面列出了许多硬件设备的uses-feature
问题的原因是我们的应用中需要的权限太多,导致没有定义中提到的权限的设备无法搜索到我们的应用。
经调查:我们的应用中并没有使用到uses-feature标签,那为什么给出的提示会是“此应用只适用于具备相应功能的设备”呢?
后来查了一下原因,在我们使用permission的时候,在需要某些硬件权限的时候,其实已经隐含使用了uses-feature。
如下表:
Category | This Permission... | Implies This Feature Requirement |
---|---|---|
Bluetooth | BLUETOOTH | android.hardware.bluetooth (See Special handling for Bluetooth feature for details.) |
BLUETOOTH_ADMIN | android.hardware.bluetooth | |
Camera | CAMERA | android.hardware.camera and android.hardware.camera.autofocus |
Location | ACCESS_MOCK_LOCATION | android.hardware.location |
ACCESS_LOCATION_EXTRA_COMMANDS | android.hardware.location | |
INSTALL_LOCATION_PROVIDER | android.hardware.location | |
ACCESS_COARSE_LOCATION | android.hardware.location.network and android.hardware.location | |
ACCESS_FINE_LOCATION | android.hardware.location.gps and android.hardware.location | |
Microphone | RECORD_AUDIO | android.hardware.microphone |
Telephony | CALL_PHONE | android.hardware.telephony |
CALL_PRIVILEGED | android.hardware.telephony | |
MODIFY_PHONE_STATE | android.hardware.telephony | |
PROCESS_OUTGOING_CALLS | android.hardware.telephony | |
READ_SMS | android.hardware.telephony | |
RECEIVE_SMS | android.hardware.telephony | |
RECEIVE_MMS | android.hardware.telephony | |
RECEIVE_WAP_PUSH | android.hardware.telephony | |
SEND_SMS | android.hardware.telephony | |
WRITE_APN_SETTINGS | android.hardware.telephony | |
WRITE_SMS | android.hardware.telephony | |
Wifi | ACCESS_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_STATE | android.hardware.wifi | |
CHANGE_WIFI_MULTICAST_STATE | android.hardware.wifi |
这时我们又做了一下调查
我们的应用中有这样一个feature,查看文档后
- android.hardware.touchscreen
注释为:
- applicationsrequiretheandroid.hardware.touchscreenfeaturebydefault
可以修改:
- <uses-featureandroid:name="android.hardware.touchscreen"android:required="false"/>
这样我们就找到了问题的解决方法,即
- <uses-featureandroid:name="string"android:required="false"/>
这样就不会要求设备必须具有该硬件设备,这样我们的应用程序就可以被更多的手机适配了。
更多相关文章
- 从HTML5统治世界的说法来看Native APP 和 WEB APP 的差别
- Android用户权限之记录是否调起弹窗
- Android兼容性测试应该怎么做逼格更高呢?
- Android之手机出现"已安装了存在签名冲突的同名数据包"的原因及
- Ubuntu上开发Android,手机调试配置
- Android与物联网设备通信-网络模型分层
- 不同手机在豌豆夹上显示设备同名的解决方法 && Android(安卓)获
- Android(安卓)Studio真机无线调试(2020最新亲测有用)
- 用android做的一个简单的电话拨号器的错误的解决(用android模拟两