Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android App not compatible with devices that sideload Google Play

I have an app which has been deployed to Play and is compatible with any device running 2.1 or later; no special restrictions or requirements defined in AndroidManifest.xml.

There have been several complaints from users trying to install the app via Google Play but getting messages that it is not compatible. In all of these cases sideloading the app works perfectly.

Digging a little deeper into the problem it appears that in all cases, the people reporting the problem are using a device that did not ship with Google Play installed. IE. the device probably failed Google's CTS.

Having said that, they are able to install other apps via Google Play but not ours. Again, sideloading our app onto these devices works fine. Does anybody know why this might be? I assume it must be something I am doing incorrectly in AndroidManifest.xml but I see nothing suspicious.

EDIT: Here's the AndroidManifest.xml, altered to protect the names of the innocent:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.foo.bar"
      android:versionCode="1"
      android:versionName="@string/global_app_version">
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application android:label="@string/global_app_short_name" android:icon="@drawable/app">
        <activity android:name=".HomeActivity"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity android:name=".AActivity"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
            </intent-filter>
        </activity>

        <activity android:name=".BActivity"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
            </intent-filter>
        </activity>

        <activity android:name=".CActivity"
                  android:launchMode="singleTask"
                  android:theme="@android:style/Theme.Black.NoTitleBar"
                  android:windowSoftInputMode="stateHidden">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
            </intent-filter>
        </activity>

        <activity android:name=".DActivity"
                  android:launchMode="singleTask"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
            </intent-filter>
        </activity>

        <activity android:name=".EActivity"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
            </intent-filter>
        </activity>

        <activity android:name=".FActivity"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
            </intent-filter>
        </activity>

        <!-- This activity is invoked whenever an xxx is opened -->
        <activity android:name=".GActivity"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter android:label="@string/global_app_short_name">
                <action android:name="android.intent.action.VIEW"/>
                <action android:name="android.intent.action.EDIT"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:mimeType="application/xxx"/>
                <data android:mimeType="application/yyy"/>
                <data android:mimeType="application/zzz"/>
                <data android:mimeType="application/aaa"/>
                <data android:mimeType="application/bbb"/>
            </intent-filter>
        </activity>
    </application>
</manifest> 
like image 360
Nick Avatar asked Jun 22 '12 14:06

Nick


People also ask

Why are some Google Play apps not compatible with my device?

The error appears when the Play Store thinks your device isn't compatible with the app you're trying to download. This doesn't mean that there's an issue with your device. The error means the app developer hasn't chosen your device for their app (for their own reasons).

How do I install an app that is not compatible with my device?

Open “Settings” and go for “Security options.” Scroll down to find Install Apps from “Unknown resources” and tap it. A pop-up window will open related to security risks and tap “OK.” Now you can easily install an external apk file from unknown resources.


1 Answers

I found the culprit - Copy Protection was enabled. From Google's notes on the setting: http://developer.android.com/guide/google/play/filters.html

To copy protect an application, set copy protection to "On" when you configure publishing options for your application. Google Play will not show copy-protected applications on developer devices or unreleased devices.

In other words, having to side-load Google Play is just a side effect of being an "unreleased device" / device that fails the Google CTS. In any case, disabling copy protection resolved the issue.

like image 198
Nick Avatar answered Oct 15 '22 10:10

Nick