I just upload my app and I found that in almost 60% of the devices isn't compatible (Google Play, compatibly devices).
I have this on my manifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="false" />
<uses-feature android:name="android.hardware.camera" />
I try it on Nexus 7 (2012) and LG Optimus and none are compatible any ideas?
Best,
If you specify <uses-feature android:name="android.hardware.camera" /> then only devices with rear facing cameras will be included.
The Nexus 7 (2012) will not be compatible as it only has a front facing camera.
Android 4.2 added android.hardware.camera.any, which will allow devices that have a front or back facing camera.
See here for more info:
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#hw-features
Also, if having a camera isn't mandatory for your app you can specify android:required="false" for the uses-feature. If you don't specify this then the default is android:required="true" and any device which does not have the feature will be deemed incompatible.
Related
We recently released an application update on the Google Play Store.
Now some tablets that previously could download it can no longer.
As you can see in the gradle the minimum version is Android 8.
defaultConfig {
applicationId "com.myapp"
minSdkVersion 26 //Android 8
targetSdkVersion 29 //Android 10
multiDexEnabled true
versionCode 106
versionName "7.2"
}
Here is what we are asking for in the manifest
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.NFC_TRANSACTION_EVENT" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.nfc" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
Our customers' table is Samsung Galaxy Tab (10.1 "2019) but by analyzing the list of devices that we support and do not support in the catalog of devices on Google Play Console, we have noticed that many tablets are excluded.
Our customers' table is Samsung Galaxy Tab (10.1 "2019) but by analyzing the list of devices that we support and do not support in the catalog of devices on Google Play Console, we have noticed that many tablets are excluded.
Unfortunately our tablet is not present in the catalog so we cannot get more information.
Tablet information:
Android 9
DISPLAY 10,1" 1200 X 1920 PX
FOTOCAMERA 8 MPX Ƒ/2.0
CPU OCTA 1.8 GHZ
RAM 3 GB
The problem was due to the following line of code:
<uses-feature android:name="android.hardware.camera" android:required="true" />
Even if the device in question has the camera module (actually who from Android 8 onwards does not have a camera module?) The Google Play Store does not think so.
As advised by Shawn Hazen the problem was resolved by bringing the value to false.
The play store is showing that my app is not compatible with the Nexus 7 (older model with only front-facing camera, ME370T). My app does require a camera but can use the front-facing camera. I tried to take this into account in my Manifest by specifying that any camera could be used (not just the back facing camera):
<uses-feature android:name="android.hardware.camera.any" />
Otherwise, I have no idea why it's not able to run on the Nexus 7. Here are my permissions:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera.any" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
Any ideas why I can't install the app?
It seems like the app store may ignore the "any" specification for uses-feature. I changed my camera requirement to
<uses-feature android:name="android.hardware.camera" android:required="false" />
and it seems like it's supported now.
I have published my first camera app, and in developer console currently there are 4282 supported devices and 0 excluded.
Three Nexus 7 models are listed in the supported list (1.Google Nexus 7 - flo, 2.Google Nexus 7 - deb and 3.Nexus 7), however i cannot install the apk on my Nexus 7 (2012) through Google Play saying it's not compatible. (i use to test my app on that device, it runs perfectly).
I know my manifest should include
<uses-feature android:name="android.hardware.camera" android:required="false" />
to be compatible with Nexus 7, but why does it appear in the supported list?
Using the device availability dialog document states:
Device Availability provides a dynamic list of compatible devices
based upon your manifest settings
so my Nexus 7 should not be listed!
Do i miss something?
EDIT
here's manifest permissions and features:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"/>
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait" android:required="false" />
Adding
<uses-feature android:name="android.hardware.camera" android:required="false" />
to the manifest file (although i wouldn't, because actually camera is required), 56 devices were added to the supported devices list, included two more Nexus 7, now they are:
GoogleNexus 7– grouper
Nexus 7
GoogleNexus 7– tilapia
GoogleNexus 7– deb
GoogleNexus 7– flo
I deduce that deb and flo are the new ones, with back camera, and old ones (v2012) are grouper and tilapia, i don't know about the ones labeled "Nexus 7" only.
Basically, some Nexus 7 devices do not need any user permission for Camera or WiFi, but has to be used the uses feature instead.
For example, use these
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.wifi" android:required="false"/>
instead of
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Does your G7 has camera? If not, it is correct that you cannot see it from GooglePlayStore on your G7 (since you have set require camera = true).
And another check point, might mean you should have a GPS.
I have a serious problem concerning the compatibility of my app with some devices.
At the moment these are my configurations and permissions:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<supports-screens android:anyDensity="true" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
This would in my opinion mean that my application is compatible with every smartphone (not tablet) with Android 4.0.x or higher. Is that correct?
Because I recognized that it is not compatible with Samsung Galaxy S II with 4.1.1 which I simulated with Genmyotion. Also our customer described this beviour on a real device. Does anyone of you know why this problem could occur?
I think I have found the problem by myself (see android market says no device compatible?)
I have included permission
<uses-permission android:name="android.permission.CAMERA"/>
which by default includes auto focus feature. So I have to add the following in my manifest to disable it:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
Thanks to chrish
A potential user of my Android app has contacted me to report that they are unable to install my app from the Android Market.
They receive the following error when attempting to install the application:
"Application requires features not available on your device."
My app declares the following requirements in its manifest:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="true" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="true" />
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="true" />
The user's device is a Samsung Infuse 4G. I have been over the specs for Samsung Infuse and it is clear that has the necessary hardware to satisfy these requirements.
Moreover, the Samsung Infuse 4G is listed as a supported device for my app in the Android Market Developer Console "Device Availability" dialog.
Has anyone else seen this error? Can anyone suggest any possible causes for this error which could be addressed/worked around?
Many thanks.
When this happens on my app, I have a "debug" app that I temporarily publish in the market. I remove one restriction at a time until it installs properly for the customer.