Search code examples
androidgoogle-playandroid-tvleanbackgoogle-play-console

Google Play Console: Android TV app unsupported on many devices


My application supports only Android TV devices. I've uploaded it to Google Play Developers Console with the following AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />
<uses-feature
    android:name="android.software.leanback"
    android:required="true" />

<application
    android:name=".MediaApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.Leanback">
    <activity
        android:name=".presentation.main.MainActivity"
        android:banner="@drawable/app_icon"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:logo="@drawable/app_icon"
        android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>
    </activity>

The problem is, that currently it shows only 28 supported devices and devices I've used for testing the application, such as Nexus Player and Xiaomi Mi Box 3 are displayed as unsupported with the message:

This device model is not supported in your app's APK manifest and hence users of this device model cannot install your app.

Other popular Android TV devices like Nvidia Shield TV are also unsupported. Seems to be like everything is correct in AndroidManifest.xml for me and all activities use android:screenOrientation="landscape". Any ideas why is it unavailable for such devices?


Solution

  • The RECORD_AUDIO permission is for unfettered use of the microphone. Certain forms of voice input, particularly when through platform add-ons like Play Services, might not require that permission. I haven't played with voice input and Android TV, but at least once upon a time, apps had no access to the microphone on select Fire TV remotes, as that was reserved for system-level voice search/Alexa commands.

    The catch with RECORD_AUDIO is that it implies that you need the android.hardware.microphone system feature. If an Android TV box either lacks a microphone or does not offer it for direct use by app developers, it will not declare that it has that system feature... and therefore your app would block it.

    AFAIK, your options are:

    1. Live with the limited audience, because your app needs complete microphone access

    2. Add a <uses-feature> element to say that android.hardware.microphone is not required, then only use the microphone on devices that actually have one (if complete microphone access is not essential for your app)

    3. Eliminate microphone usage entirely, so you can drop RECORD_AUDIO

    4. Find some other way to handle voice input, so you can drop RECORD_AUDIO

    From your comment, I assume that you chose option #4. For the benefit of others encountering this question, you might consider answering it yourself, explaining in greater detail why you were requesting it originally and why you feel that you no longer need it.