I have an alpha prototype of my app up on the Play Store. For some reason, users with tablets cannot download the app – they get the message "Your device isn't compatible with this version." I haven't had a chance to test multiple tablets, but I know this is a definitely an issue with the Nexus 7.
If I look up the device compatible through the developer's console, I see that tablets such as the Nexus 7 are listed as compatible (and no devices are listed as excluded).
I have also ensured that the tablets that cannot download the app have the latest operating system and thus should not be incompatible because of OS incompatibility.
Does anyone know what might be the issue preventing tablets from downloading my app?
I've included my manifest in case that's helpful.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.activities"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0"
android:windowSoftInputMode="adjustPan" >
<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.CACHE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="#drawable/test_logo"
android:label="#string/app_name"
android:theme="#style/SampleTheme.Light" >
<activity
android:name="com.test.activities.LoginActivity"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
...
</application>
</manifest>
As a side question, I'm interested in learning how to see whether a device is compatible with your app before you upload a new APK to the play store. I never had an issue testing the app directly on the device, so I was surprised to find it is listed as incompatible on the play store.
I think that it's because of <uses-feature android:name="android.hardware.camera.autofocus" /> (assuming that Nexus 7 doesn't have autofocus). You can add the android:required="false" so the app will be available to devices that don't have autofocus too.
Does anyone know what might be the issue preventing tablets from downloading my app?
RECORD_AUDIO requires that the device have a microphone, and not all tablets will have a microphone.
Also, please remove <uses-permission android:name="android.permission.CACHE" />, since there is no such permission in Android.
As described in the official Tablet App Quality guide:
In your app manifest, locate any <uses-feature> elements. In particular, look for hardware features that might not be available on some tablets, such as:
android.hardware.telephony
android.hardware.camera (refers to back camera), or
android.hardware.camera.front
So, you have to replace these 2 lines:
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
by this one:
<uses-feature android:name="android.hardware.camera" android:required="false" />
& of course handle the case when the Camera feature doesn't exist in the device by this check:
if (Camera.getNumberOfCameras() > 0){
// device has camera, it is safe to use it here
}
I don't know the exact answer to this, but I do know that Play determines the list of supported devices by THESE numbers:
android:minSdkVersion="11"
android:targetSdkVersion="19"
They should literally be as low as possible in order for your code to work. The lower the number, the longer the compatibility list.
After that, the list of required permissions make a big difference. Because some devices don't have those features that are required. So you have to crossreference that list as well.
Related
This question have a lot of responses already but none of it helps me
I created an Android app and it says that I can't install it on tablet. If I run project from Android Studio on tablet it works perfectly.Also it doesn't find the app by name only on the tablet.
On desktop when open my app's page:
On tablet when open my app's page using a direct link:
My tablet has Android 4.4.2
in app gradle file:
minSdkVersion 16
targetSdkVersion 23
in app manifest I am using:
<!--for IMEI -> is not a must to have gsm-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--is not a must to have autofocus or even camera-->
<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" />
<!--to support all screens-->
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
"For your app to be showcased in the 'Designed for tablets' list in the Play Store, you need to upload at least one 7-inch and one 10-inch screenshot. If you previously uploaded screenshots, make sure to move them into the right area below." This can be found when you are setting the distribution for your app on google play. If you do not provide a screenshot for this screen, Google will set your app just for phones.
Does your tablet have gps? If not you should probably add:
<uses-feature android:name="android.permission.ACCESS_FINE_LOCATION"
android:required="false" />
And also try adding xlargeScreens to true.
Check if your tablet is set in supported devicess.
Go to Play Dev Console, then click on APK, then under supported devices click 'see list' and navigate to Samsung to check if your device is set.
Alternatively in same APK section click on your current app version and in popup, check if your language (and region) are supported in Localizations section.
Both cases might checkout to be OK, but never hurts to check :)
I m up loading my latest apk onto google play store with few new permissions
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
doing so have reduced the number of supported devices. How can I make it support the earlier devices as it did before?
i think you can use <uses-feature> tag in your manifest file to tell google play that your app doesn't need the proper hardware for that if the device doesn't support that hardware:
<uses-feature android:name="android.hardware.wifi" android:required="false" />
Does anyone know how you can see why Google Play Store is marking specific devices for an app you created as 'not compatible' ?
I created an app and one of my testdevices was a GalaxyTab2. On this device all functions of the app are working no problem when you just put the apk on the device using a USB cable/or just downloading it from a website.
However when I upload the app to playstore the GalaxyTab2 is listed as an unsupported device. So GalaxyTab2 users are unable to install the app.
In the Google Play Developer Console you can see an overview of unsupported devices. But it seems that you can't get any info 'why' the device is unsupported.
This currenlty lists 1000 devices. Of these a lot will be unsupported due to the fact that their Android version is too old. But from some devices (like the GalaxyTab 2) I am sure they can and run the apk no problem.
Some lines of my manifest:
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="16" />
Try adding:
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
To your manifest. Your FLASHLIGHT permission may imply that it is a required feature, and as the Galaxy Tab 2 doesn't have a flash, it'd be incompatible. Same for autofocus, as pointed out by #323go.
The problem can be with the feature requirements for certain permissions.
For example
<uses-permission android:name="android.permission.CAMERA" />
may include the requirement of AutoFocus, so I would try to add
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
to the AndroidManifest.xml.
Also the permission
<uses-permission android:name="android.permission.FLASHLIGHT" />
may include the requirement of flash hardware so I would add
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
as well.
Here you can find a list that shows all permissions that imply Feature Requirements
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions
Remove android:allowBackup="true"
I'm having trouble getting my app to install on a tablet through the market. Note I'm not using Honeycomb as the app is primarily for a phone. Previousdly I was using level 7 but now changed it to level 10 (2.3.3) to support xlargeScreens. The app installs on my tablet via adb and works great but its not possible to install through the market.
I've read several posts on SO and thought my manifest is correct after adding the supports-screen property.
Here are the most important parts of my manifest:
<uses-sdk android:minSdkVersion="7" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Any idea where I'm going wrong?
Thanks in advance.
it's probably your android.permission.MODIFY_PHONE_STATE.
check this official issue that is specific to 2.3+
http://code.google.com/p/android/issues/detail?id=15031
The MODIFY_PHONE_STATE permission was marked as "for system use only" in Android 2.3.
While this was never intended for developers and publicly endorsed by Google, there are hundreds of apps in the marketplace using it. Unfortunately, a seemingly innocent checking by the Android folks has now crippled many popular apps for Android 2.3+.
This is an ENHANCEMENT request that you:
1. Restore the MODIFY_PHONE_STATE permission for Android 2.3.x
2. Create a proper Telephony API for Android 2.3+ (at which time you can remove the MODIFY_PHONE_STATE permission)
If the problem is related to MODIFY_PHONE_STATE
Maybe you can try:
<uses-feature android:name="android.hardware.telephony" android:required="false" />
Never try this, but you can check.
By the way, here you have the information regarding Market-Filtering
Market Filtering
I have an Android application on Android Market, but some users are complaining about an error shown when the installation starts, just after the download:
One of them sent me a video of this error showing up, and I could see that this error is not caused by the application, but probably in the verification of permission/features process.
As far as I know, this error is just happening on Motorola Droid/Milestone devices running Eclair, it doesn't happen with Froyo. Unfortunately, I don't have access to any device like this one in order to run logcat and check what's going on.
Here are my permission/features on AndroidManifest.xml:
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.location" />
<uses-feature android:name="android.hardware.telephony" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
I finally found out what's happening by getting a Droid device and running logcat:
E/PackageManager( 1280): Package com.mycompany.myapp requires unavailable feature android.hardware.telephony; failing!
Motorola Droid devices running Eclair are not able to install applications that declare
<uses-feature android:name="android.hardware.telephony" />
in their manifest. It's very strange, though, because the Android Market should hide it from these devices. This is probably a bug caused by the changes made to the Eclair by Motorola, since it doesn't happen with other devices running Eclair, neither with the same Droid running Froyo.
According to the docs:
Android Market attempts to discover an application's implied feature
requirements by examining other elements declared in the manifest
file, specifically, <uses-permission> elements.
Given that, have you tried removing the uses-feature tags? Since those are implied by the uses-permissions tags, and you aren't using the "android:required" attribute.
The device say " this feature is not available in this device " when I'm installing an app downloaded from play store and i have to give it permission