I developed and tested my app using various phones and tablets emulators, and 4 real devices : Samsung Galaxy Ace (GT-I8160P) , Samsung Galaxy Tab 2 (GT-P5110 and GT-P3110) and a Storex M977. After 5 months of work and tests, the App works fine on all these devices. So I uploaded it on Google Play. But Google Play indicates that it's not compatible with my tablets. I can't install it using Google Play on my Galaxy Tabs...
I can't figure out what is the problem. I added support-screens section without success. I was a bit desperate so I also added these uses-features with required="false" : GPS, NETWORK, TELEPHONY, WIFI, LOCATION, TOUCHSCREEN even if the app worked fine without these uses-features. Same result. I also removed "TargetSdk". Google Play says that my app is compatible with 2339 devices including some Galaxy Tabs, but not with my tabs. Only the Galaxy Ace can install it from Google Play.
Here is my manifest file (I just replaced package original package name by fr.test.app for confidentiality reasons). What I'm doing wrong ?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.test.app"
android:versionCode="7"
android:versionName="1.2" >
<uses-sdk
android:minSdkVersion="8"
/>
<supports-screens android:resizeable="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<uses-feature android:name="android.hardware.WIFI" android:required="false" />
<uses-feature android:name="android.hardware.GPS" android:required="false" />
<uses-feature android:name="android.hardware.TELEPHONY" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
<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="false" />
<uses-feature android:name="android.hardware.NETWORK" android:required="false" />
<uses-feature android:name="android.hardware.TOUCHSCREEN" android:required="false" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CAMERA.FRONT"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<permission android:name="fr.test.app.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="fr.test.app.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="fr.test.app" />
</intent-filter>
</receiver>
<service android:name=".GCMIntentService" />
<receiver
android:name=".OnBootReceiver"
android:enabled="true"
android:exported="false" android:label="OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</receiver>
<receiver
android:process=":remote"
android:name="fr.test.app.Alarm">
</receiver>
<receiver
android:process=":remote"
android:name="fr.test.app.CamAlarm">
</receiver>
<receiver android:name=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin" android:resource="@layout/policies">
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED">
</action>
</intent-filter>
</meta-data>
</receiver>
<service
android:name=".BbSvc" android:enabled="true"
android:exported="false"
/>
<service
android:name=".WpsLoc" android:enabled="true"
android:exported="false"
/>
<service
android:name=".Cam" android:enabled="true"
android:exported="false"
/>
<service
android:name=".MniRec" android:enabled="true"
android:exported="false"
/>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".reminder"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!--
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" /> -->
</intent-filter>
</activity>
<provider android:name="fr.test.app.AndroidProvider"
android:authorities="fr.test.app.AndroidProvider"
android:exported="false"/>
</application>
Sometimes an existing issue with the Google Play Store services might cause the 'Your Device isn't compatible with this version' error on your Android device. To resolve this, you can try force closing the Google Play services manually and then relaunching it to install your desired app.
For future reference to anyone stumbling upon this, Android has a great guide on permissions and filtering. This includes a complete list of implied hardware features when using certain permissions. (It's at the bottom.)
http://developer.android.com/guide/topics/manifest/uses-feature-element.html
This is either a new addition to the documentation or just really hard to find. XD
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With