I have put below code in android manifest file. So My app will not work in small size screens.
<supports-screens android:smallScreens="false" >
</supports-screens>
But now when I run application in small screen device via eclipse, it can be install.
If i want to check that small screen device cannot dwonload app from google play store how can I test?
I want to check before uploading to the play store.
You can not test without publishing app on playstore because only Google Play takes care of it.
To do so, you can enable filtering by external services such as Google Play by adding
elements to your manifest file that specify the screen configurations your application
supports.
External services such as Google Play use this information to apply filtering to your
application, so that only devices that have a screen configuration with which you declare
compatibility can download your application.
Fore more information Documentation
Publish your app via google play and check what devices will be rejected from use. If devices like HTC Wildfire is disabled you can be sure that small devices are not supported in your app.
When developers make apps, they have to specify any hardware/software requirements in a file called the androidmanifest.xml file.
These can be hardware or software requirements, such as if the app needs GPS, or telephony features - or if it will only work on a certain Android version.
When you use Google Play, it sends your device's 'features' to the server, and then filters apps accordingly.
The most likely reason it is deemed incompatible by Google Play is that it is set to require a certain screen resolution - or maybe portrait/landscape mode defaults.
Some tablets have a low resolution, and also tell google play that they cannot go into portrait mode.
It could also be, your tablet being generic, that it does not have the required GPS or sensors that the manifiest file says it needs, and the market is stopping you from installing because of that.
You can test by uploading apk file into the Google Play service. But, dont publish. Try to download/browse from/in Google Play in small screen devices. Make use of Sandbox.
Related
I asked a question earlier about stopping tablets from an android app and I've added this line to the code:
<uses-feature android:name="android.hardware.telephony" android:required="true"/>
Now I want to verify it and be sure that the app cannot run on a tablet by testing it on an emulator. However, it seems like this requirement is always met on emulators. Is there another way to go about testing it?
You do, with that line, block all devices that do not have access to a SIM card from installing from Google Play. This isn't limited to tablets. THere may be phones without sim cards, and there are tablets with SIM cards and the ability to send text messages and make calls.
From Ken Wong's comment on the question:
Declared elements are informational only, meaning that the Android system itself does not check for matching feature support on the device before installing an application. However, other services (such as Google Play) or applications may check your application's declarations as part of handling or interacting with your application.
If you want to block tablets as a whole, that is basically impossible. This question offers a possible solution using the supports screens tag, but this, AFAIK, only makes the app incompatible on Google Play. If it is installed from a third party (USB debugging, APK mirror, from an APK file, etc) it can be installed. Once again we are back to the compatibility issue. The supports-screens tag is the same as the required tag: It is informational. Those who respect the tag doesn't allow installs. From this article:
An application that does not support small screens will not be available for small screen devices from external services (such as Google Play)
Small screens is just an example. If the support for any screen size is set to false, it will not be available from external services. Installing the APK directly (apk install outside Google Play or from USB debugging) bypasses it.
In addition, there are phones with xlarge screens. (They are more phablets I think the term is, but they are still phones. Just large ones).
So to summarize:
Using the required tag (should in theory) allow the app to install from third party sources, but Google Play shows it as incompatible. So USB debugging and APK installs (not from Google Play) allows install. Check for compatibility at runtime instead
Attempting to prevent tablets from accessing the app is basically stupid. Tablets can have SIM cards as well, blocking tablets because they have a bigger screen is not a good idea. Checking for the SIM card instead is the best way.
As for the emulator, AFAIK it would install in testing even though required is true. It will crash if you make calls to things it doesn't have. Have you checked to ensure the tablet emulator actually doesn't have telephony access?
Now I want to verify it and be sure that the app cannot run on a tablet by testing it on an emulator. However, it seems like this requirement is always met on emulators. Is there another way to go about testing it?
Well, required (as mentioned in a comment) is informational. The device itself doesn't check the conditions in the manifest (required = true at least). Once it is installed, check at runtime for compatibility. The required = true tag prevents installs from Google Play on unsupported devices (it shows up as "incompatible").
(Unfortunately) apps have a tendency to get pirated and uploaded to APK mirrors and similar sites (I know this from experience). These sites aren't like Google Play, and ignore the required = true calls. The app can be installed from these sites even on incompatible devices. So the best way to avoid incompatible usage is to check if the device has telephony access at runtime.
For checking on Runtime, that is a big field. Check this question for different solutions.
I can't find anything online for this.
A user mentioned that he couldn't download my App because Google Play wouldn't let him. So I bought the device the user has (Galaxy Tab 3) because I couldn't figure it out remotely.
I can't find the App in the Play Store on the device. If I log in with the same Google account, it tells me that my device is incompatible with this App. All the information I have is "No Carrier".
Could it be possible that if my App needs an Internet connection I can't download the App if the device doesn't have a Sim-Card or something?
Update:
I have another flavor of this app in the store. The only difference (manifest-wise) is that this app needs camera permissions. But even if I make those optional (setting 'required' to false), it doesn't help. Also the specific model 'GT-P5210' is not listed in neither of my Apps in the supported devices list (even though I can find the other app in the store with the device). Also I made sure that there are screenshots for every possible tablet size.
Also I can of course install the App from Android Studio.
in the google play console, under store listing
add some screenshots for "TABLET".
without that, google play will think that your app is not meant for Tablets (which Galaxy Tab 3 is classified under).
The error indicates that there is a requirement listed in the app's manifest for phone networking. You need a phone to use it.
I just uploaded a Phonegap made app to google play and it displays that there are 0 devices excluded for it. This isn't true at all, since a friend cannot find the app by searching via google play. His device is a galaxy mini running Android 2.2, but as I said, my google play control panel says 0 devices excluded so I don't know the reason/what to do.I have allowed all screen types in my manifest and target sdk from 8 to 17.
Do anybody have a clue what's going on?
App name: Txorierri turismo.
Excluded is not the same as "not available."
You can choose specific devices and manually force them to be excluded, but they DO have to be compatible with your app, anyway.
If your app is only for large devices, for instance, all non-large devices won't see yout app in Play at all. You can choose some large devices, though, and exclude them, so they also won't be able to see the app (despite the fact of meeting your app's requirements).
So I finally find the problem, it has to do with galaxy mini model, if you have permission for camera in you manifest the app won't be available for this device. Hope this helps someone! Thanks!
My app is compatible for Google Nexus 7 but not with other tablet like BSNL etc. Is there any way to check in Google play why app not compatible for particular tablet.
Device Availability on the Google play developer console provides a dynamic list of compatible devices based upon your manifest settings. therefore its better to start from the manifest file. Check the "uses" permissions.
https://support.google.com/googleplay/android-developer/answer/1286017?hl=en&ctx=go&
It could be the case that you may have added some hardware features or incompatible screen size which is not compatible with the Nexus 7.
I have developed and published an Android application on the Android market. The phone I used for developing this is a Samsung Galaxy running Android 2.3.
On Google Play, it does not allow me to download the app to the above phone, saying that the phone is not eligible.
What could be the cause of this ? It gets downloaded to other devices, that even run Android 2.2 so it can't be an issue with the Manifest.
The manifest can define other limitations (other than min version). For example screen size, density, required hardware and more.
The developer can also define some filters in the developer console.
So probably one of those options are filtering out your device.