0

I have published an Android app in Google Play Store. I have developed it and tested it on some emulators, my mobile tel and my 7" tablet. No problem at all. I have detected that when trying to install the app from the store to my tablet, it says that it is not compatible with my device. I have searched for the reason, and I have added some lines to the manifest, like these:

<supports-screens

android:largeScreens="true"

android:normalScreens="true"

android:smallScreens="true"

android:xlargeScreens="true"

android:resizeable="true"

android:anyDensity="true"

/>

But not solved. I have added also:

<uses-feature android:name="android.hardware.telephony" android:required="false">

But not solved.

The app uses Google Maps API. And the only reason for not being listed for my tablet may be the GPS use. I have always emulated my current position while developing, what should I change in the manifest to allow devices with no GPS service to be compatible to the Google Play Store filters?

Thank you

EDITED TO INCLUDE THE ENTIRE AndroidManifest.xml file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.solinpromex.casajuventudtrescantos"
    android:versionCode="4"
    android:versionName="1.4" >



    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
   <meta-data android:name="com.google.android.maps.v2.API_KEY"
                android:value="not shown here"/>
   <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-feature android:name="android.hardware.telephony" android:required="false"></uses-feature>
<permission android:name="com.solinpromex.casajuventudtrescantos.permission.MAPS_RECEIVE"
                    android:protectionLevel="signature"/>
<uses-permission android:name="com.solinpromex.casajuventudtrescantos.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <supports-screens

android:largeScreens="true"

android:normalScreens="true"

android:smallScreens="true"

android:xlargeScreens="true"

android:resizeable="true"

android:anyDensity="true"

/>
<uses-feature
  android:glEsVersion="0x00020000"
  android:required="true"/>
    <application
        android:allowBackup="true" 
        android:icon="@drawable/logo192"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        >
        <meta-data android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version" />
        <activity
            android:name="com.solinpromex.casajuventudtrescantos.Inicio"
            android:label="@string/app_name"
             android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       ..activities come here


    </application>

</manifest>

2 Answers2

4

As I suggested in my question, the solution was to add the following lines to AndroidManifest.xml:

<uses-feature android:name="android.hardware.location.gps" android:required="false"></uses-feature>     
<uses-feature android:name="android.hardware.telephony" android:required="false"></uses-feature>
  • 2
    Just make sure that you perform manual checks in you application for the various hardware modules before you use them, because the above lines will allow you to install the application on a device that does not have those peripherals, even though the request for permission and the `` tags inherently suggests that you need them. For example if you plan on using GPS, make sure you do: `PackageManager pmangr = getApplicationContext().getPackageManager(); boolean hasGPS = pmangr.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);`. Or something like that. – Willis Dec 27 '14 at 22:12
1

Have you ensured that there is not an SDK incompatibility? Your inability to install the application might not have anything to do with the tablet itself but rather with the SDK version that is on the tablet(s). If the SDK on the tablet(s) is lower than the minimum SDK specified in the application manifest file then you will not be able to install the application. Even if you did not explicitly specify this in the manifest file, the minimum SDK that will be supported for installation will be determined by the highest API that you used in the development of your application. For instance, if you used the new camera API, android.hardware.camera2, which is only available for in the most recent SDK, then you will not be able to install the application on any device which is not utilizing the latest SDK.

Willis
  • 5,308
  • 3
  • 32
  • 61
  • The app manifest has minSDK:14,targetSDK:17. My tablet is version 4.4.2 (SDK 19). Do you think that could be the problem? – Modesto Vasco Dec 26 '14 at 17:40
  • In theory this should not be an issue. What exactly does the error say that you get when you try to install the application through the app store? Another way to also get some more information about what might be causing the incompatibility is to connect the tablet through `ADB` and try to debug the application. If the installation fails this way as well, you should be able to see the reason for the failed installation in the logs/debug output. – Willis Dec 26 '14 at 17:45
  • Thank you Willis, I have been testing the app with the tablet also, and no error is shown. There is no error trying to install the app through the app store, it only says that "Your device is not compatible" and the installation is not possible. – Modesto Vasco Dec 26 '14 at 18:40
  • Here are two things to try... 1. As I mentioned in the previous comment, connect the tablet via USB and debug the application; if the application fails to install, you should be able to inspect the logs and find out why. 2. Just for kicks, try setting your `android:targetSdkVersion="19"` and see if you are able to install the application on your tablet. – Willis Dec 26 '14 at 18:43
  • Thank you again Willis, the first try is solved, then the app is installed on the tablet without any issue . I will try the second try... – Modesto Vasco Dec 26 '14 at 18:45
  • I have updated my question to include the entire manifest file, may be you can see a possible issue source there... – Modesto Vasco Dec 26 '14 at 18:47
  • Try removing the target SDK from your manifest file and only specifying the minimum SDK required for installation - that is, remove `android:targetSdkVersion="19"` from your manifest file. Also perhaps try cleaning up your manifest file - I see that some permissions are mentioned twice. – Willis Dec 26 '14 at 19:24
  • Willis, thank you for your help. Please see my answer to my own question. – Modesto Vasco Dec 27 '14 at 00:22