I uploaded my application on Google Play Store. I could search for it and install on almost every device. Except on Samsung Galaxy Y Duos s6102
After searching for a solution, few things i found out:
Problem with uses-features in the Manifest:
I am having only 2 features in the Manifest
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
But the device has a Camera, so this might not be the case.
Problem with support-screens in the Manifest:
I haven't added any such tag in my Manifest, assuming that by default all Screens are supported. And confirmed that from the developer's console
I found out that QVGA Screens are not supported by default, you have to explicitly declare them.
But QVGA screens come under Small Screen as stated here:
Then thought density might be the reason, but from the docs:
For applications that support Android 1.6 (API level 4) and higher, this is "true" by default and you should not set it "false"
So, are there any other reasons for this Issue? Or should i try adding them all to my Manifest file.
In the link provided to the device specifications, it states that the camera is 'fixed focus'.
When you add a uses-feature entry in your manifest, that feature is required and will block devices on Google Play which don't have it. As long as it doesn't break anything or make features non-functional like a barcode scanner in the case of 'autofocus', adding required=false should be fine.
Related
After adding ArCore support to app, and setting com.google.ar.core to optional in manifest file (as shown below), I'm seeing that Play Store Pre-Launch tests only seem to run on devices that support ArCore. Anyone else seeing this?
<meta-data android:name="com.google.ar.core" android:value="optional" />
So, the issue turned out to be that I still had android.hardware.camera.ar set to required....when I updated as following then expected list of devices was now shown as supported.
<uses-feature android:name="android.hardware.camera.ar" android:required="false"/>
I have an application live in Google Play for more than a year and recently a user reported that he has a Sony Tablet S and Google Play shows him that my app is not compatible with this device.
I read through many threads in stackoverflow regarding incompatible issues, and as far as I could understand it usually happens (based on my research on various stackoverflow threads) for one of the following 4 reasons
Size of the application is large (larger than some limit specified on the device).
Due to the supported screen sizes specified in the manifest
Google play filters out app based on some implied features for the permissions requested in the app.
Filtered based on min sdk specified in the manifest
As far as I know , none of the above should be applicable for my app because
Size of the app is less than 1mb
I have not specified any supported screen sizes in the manifest
I have only requested 3 permissions in the manifest (INTERNET, ACCESS_NETWORK_STATE, WRITE_EXTERNAL_STORAGE) and based on android documentation these permissions don't seem to have any implied user-features. (I could be wrong here). I wonder if there was a need to explicitly mention all of these permissions as optional, but couldn't find any way to do that since there are no implied user-features for these.
Min sdk is is 8, which is lower than the one supported by Sony Tablet S (API Level 15 I believe). I have not specified any max sdk version.
Here is the section from my manifest which has permissions etc.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-sdk android:minSdkVersion="8" />
I'm at a loss as to what might be prompting Google Play to show my app as incompatible on Sony Tablet S for the user. When I go to google developer console and look at the supported devices, Sony Tablet S is listed as supported, but apparently for the user it appears as incompatible.
Any leads to narrow down this issue is highly appreciated. FYI. App works fine on many other tablets - Kindle Fire, Galaxy Tab, Asus etc.
You may want to try explicitly declaring that you app supports xlarge screen sizes:
<supports-screens android:xlargeScreens="true">
By default this is not always set to true.
No, it doesn't mean that you don't support other sizes. By default your app will support small and normal screens but it's best to set it explicitly for large and xlarge screens since it can vary depending on device. See here for more info:
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
I developed and android application and uploaded in google play for mobiles. Now i did the tablet version with same functionality. In my tablet version i used <uses-feature android:name="android.hardware.telephony"> attribute which is used for phone calling services. I developed my application for both calling supported and unsupported tablets.Here i want to show my tablet version for only tablets even those are enabled/disabled with calling functionality.
I know one thing like below which will filter application play store and show the application only for android mobiles.
<uses-feature android:name="android.hardware.telephony" android:required="true"/>
Is there any other way which will filter my application and make available for only tablets( calling function enabled/disabled)
Please advice me.
Thanks in advance.
you can put on your manifest the support screen size xlarge and then the phone version you put support screen size small, medium, large.
Also you can check on the google play publish site the multiple APKs thing. I never used by I reckon it's used exactly for that.
I have seen this link which show how I can restrict download to only tablets, but I am looking the other way round.
How can I restrict my app to only download on mobiles and not on tablets? (It's the requirement from the client.)
Add a <compatible-screens> element to your manifest, outlining the specific screen sizes and densities that you support.
Another possible solution you could use is to add the following to manifest:
<uses-feature
android:name="android.hardware.telephony"
android:required="true" />
This will restrict the apk to being installed on devices that the ability to make phone calls(i.e. non-tablets).
CommonsWare's Answer is 100% correct.
You have other options also, Use
supports-screens
Or Manually filter the tablet devices in Google Play. This will be tedious task.
The app is Flash Cards Max on the Android market. I recently updated my app with a 1.6 only feature. However, I still want the app to work with those that have Android 1.5. I built it using Android 1.6 in Eclipse and I have the correct strings in the Android manifest file.
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="4"
/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Everything works in the emulator fine on 1.5 just want to be sure it shows up on the Android Market for those with 1.5. It does not. This is a market filtering question.
Please see this thread for info on what I changed and how I went about it thanks to several of your suggestions.
tl;dr
Why doesn't my app show up for 1.5 users?
Answer by a helpful user on Reddit.
"I had the same problem, solution was <supports-screens/>
Why?
Because
android:anyDensity
Indicates whether the application can accommodate any screen density. Older applications (pre API Level 4) are assumed unable to accomodate all densities and this is "false" by default. Applications using API Level 4 or higher are assumed able to and this is "true" by default. You can explicitly supply your abilities here."