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.
Related
I want to exclude my app from beeing available in Android TV devices.
What should I add to my Manifest to filter those devices?
Tried
<uses-feature
android:name="android.software.leanback"
android:required="true" />
but it does just the opposite thing (app only available for Android TV)
<uses-feature> is about what your app needs or uses, so it is a positive selector rather than negative.
You cannot say "I want only devices that do not have this".
As for Android TV, it may be possible to filter them out if we take into consideration that most TVs would not have Touch controls. Which means that if you set in your manifest:
<uses-feature
android:name="android.hardware.touchscreen"
android:required="true" />
Then your app will not be shown on at least majority of Android TV devices.
Although M. Prokhorov answer is more accurate, I'd like to add some more info about this.
If you are interested in uploading for the Google Play Store, you can go to Google Play Console-> Release Management -> Device Catalogue. From there you can exclude devices from seeing your app. You can pick devices one-by-one from "all devices" or you can apply some filter like SDK version or screen size.
This is however only a "visibility" feature, which means in theory a device you have excluded can "fake" its features and download your app. Actually, if I'm not wrong, I think on the Play Store you get a pop-up saying "your device does not support this app, continue anyway?".
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 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.
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'm developing an android app and need either the hardware feature android.hardware.camera.flash or android.hardware.camera.front. I want to assure that this app will be available for smartphones which have flashlight but no facing front camera. How can I achieve this?
Thanks in advance
I do not believe there is a way of expressly putting in an "either-or" constraint. You could add android:required="false" for both <uses-feature> elements, but then you will get devices that lack both features.
I want to assure that this app will be available for smartphones which have flashlight but no facing front camera.
Have android:required="true" on the android.hardware.camera.flash feature and android:required="false" on the android.hardware.camera.front feature.