0

I have an app I just published to the Play Store, that's showing up as "This app is incompatible with all of your devices" when I try to access it from tablets that lack telephony. It installs just fine on actual Android phones.

Here's the thing - we want users to be able to install the app on tablets and other devices that don't have phones, and to simply have the telephone functions not work. But if I include the CALL_PHONE permission in the manifest, the Play Store simply won't allow it to be installed.

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

How do I get Google Play to allow an app that asks for the CALL_PHONE permission to install on a device that doesn't have a phone?

Jeff Dege
  • 11,190
  • 22
  • 96
  • 165
  • See http://stackoverflow.com/a/11210568/603270. Worst case, having an alternate AndroidManifest with one line in it should be easy. – shkschneider Apr 24 '15 at 15:25

1 Answers1

6

You can specify that Telephony is optional:

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

The documentation says:

The table below lists permissions that imply feature requirements equivalent to those declared in elements. Note that declarations, including any declared android:required attribute, always take precedence over features implied by the permissions below.

For any of the permissions below, you can disable filtering based on the implied feature by explicitly declaring the implied feature explicitly, in a element, with an android:required="false" attribute. For example, to disable any filtering based on the CAMERA permission, you would add this declaration to the manifest file:

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

In your case, the relevant portion of the table is:

Cateegory   This permission...     Implies This Feature Requirement 
Telephony   CALL_PHONE             android.hardware.telephony
            CALL_PRIVILEGED        android.hardware.telephony
            MODIFY_PHONE_STATE     android.hardware.telephony
            PROCESS_OUTGOING_CALLS android.hardware.telephony
            READ_SMS               android.hardware.telephony
            RECEIVE_SMS            android.hardware.telephony
            RECEIVE_MMS            android.hardware.telephony
            RECEIVE_WAP_PUSH       android.hardware.telephony
            SEND_SMS               android.hardware.telephony
            WRITE_APN_SETTINGS     android.hardware.telephony
            WRITE_SMS              android.hardware.telephony
Melquiades
  • 8,496
  • 1
  • 31
  • 46
  • Just in case it doesn't jump out at people - the solution is to add a element, not just to make the element. I'm just getting started with Android, and I'd not yet seen . – Jeff Dege Apr 27 '15 at 14:31