In the past two days, we found that our app was on the Android Market, and some mobile phones could not be found because:
This application is only applicable to devices with corresponding features.
The uses-feature of many hardware devices is listed later.
The cause is that our applications require too many permissions, so that devices that do not have the permissions mentioned in the definition cannot find our applications.
After investigation: the uses-feature label is not used in our application. Why does the prompt "this application is only applicable to devices with corresponding functions?
Later, I checked the reason. When we used permission, when we needed some hardware permissions, we actually implicitly used uses-feature.
See the following table:
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 |
Then we made another investigation.
Our application has such a feature.
- android.hardware.touchscreen
Note:
- applications require the android.hardware.touchscreen feature by default
Can be modified:
- <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
In this way, we find a solution to the problem, that is
- <uses-feature android:name="string" android:required="false" />
In this way, the device is not required to have the hardware device, so that our applications can be adapted by more mobile phones.
This article from "Yu Xuan impression" blog, please be sure to keep this source http://zilla.blog.51cto.com/3095640/799727