Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App not compatible with the device I use to develop it?

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>

like image 310
user2244705 Avatar asked May 25 '13 10:05

user2244705


People also ask

Why it is showing your device is not compatible with this version?

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.


1 Answers

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

like image 135
Slynk Avatar answered Oct 21 '22 07:10

Slynk