2

I have an application that suddenly (today) became incompatible with a device it was working on just fine. The app is Dragon Lords and the device is Samsung Galaxy Tab 2. Anyone have an idea what could have happened here?

The last apk was uploaded 2 months ago and everything was working fine. Today I had a player report that in the market the app is incompatible with his device. I checked on my Galaxy Tab 2 and it's the same story. My device is not rooted so I really have no idea what happened.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="mds.DragonLords"
android:versionCode="25"
android:versionName="1.2.19" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="8" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
     >
    <activity
        android:configChanges="keyboardHidden|orientation"
        android:name="com.tapjoy.TJCOffersWebView" />
    <activity
        android:configChanges="keyboardHidden|orientation"
        android:name="com.tapjoy.TapjoyFeaturedAppWebView" />
    <activity
        android:configChanges="keyboardHidden|orientation"
        android:name="com.tapjoy.TapjoyVideoView" />
    <activity
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/app_name"
        android:name="mds.DragonLords.nowe.Splash"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".nowe.Tester" >
    </activity>
    <activity
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/app_name"
        android:name="mds.DragonLords.nowe.Main"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
    </activity>

    <service android:name="mds.DragonLords.nowe.billing.BillingService"/>

    <receiver android:name="mds.DragonLords.nowe.billing.BillingReceiver">
        <intent-filter >
            <action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
            <action android:name="com.android.vending.billing.RESPONSE_CODE" />
            <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED"/>
        </intent-filter>
    </receiver>
</application>

</manifest>
  • Did you check the android version requirements in the manifest against the tablet OS version? What version numbers do you use? – Quinma Apr 19 '13 at 22:24
  • Well the problem is it was working. So unless both devices got their OS downgraded it should be working. And I don't recall downgrading my device. Atm we have 2 APKs on the market one with minimum API lvl 7 and the other with the minimum lvl 8. So I really don't see a way this could be an API problem. – Grzegorz 'Gatz' Siennicki Apr 19 '13 at 22:35
  • There are many other manifest attributes that could affect this. Posting your manifest will get you the best chance at a solution. – Quinma Apr 19 '13 at 22:37

1 Answers1

5

Your manifest has

<uses-permission android:name="android.permission.READ_PHONE_STATE">

That permission automatically assumes you use the android.hardware.telephony feature (as only phones have READ_PHONE_STATE). Per the Optimizing for Android 3.0/Tablets document, your application will show as incompatible if you have the android.hardware.telephony feature required. Add the line

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

To ensure devices without telephony will still show as compatible. Make sure that your application properly handles devices without telephony (as attempting to read the phone state will crash those devices).

ianhanniballake
  • 191,609
  • 30
  • 470
  • 443
  • This make sense. Uploaded the new version on the market. Will let you know if the tablets can see it after it is available on the market. – Grzegorz 'Gatz' Siennicki Apr 19 '13 at 23:26
  • Looks like it didn't work. Our tablet still can't see the app. :( – Grzegorz 'Gatz' Siennicki Apr 20 '13 at 08:46
  • I really have no idea what is going on, especially since the developer console shows the Galaxy Tab 2 as one of the devices that app is available on. I would guess if anything in the manifest would make the app not run on a device the device would not be listed and our app is available on 2702 devices according to the console. – Grzegorz 'Gatz' Siennicki Apr 20 '13 at 08:48
  • One of my users managed to get some info from Google. Apparently it's a screen size problem. We just added to the manifest supporting of xlarge screens. Hope it helps. Thank you for taking the time to reply to my question. – Grzegorz 'Gatz' Siennicki Apr 20 '13 at 18:39