Android Tablet – Google Play – your device isn’t compatible with this version

By: Kevin | March 11, 2014

After a year of having my Android app, on the Google Play Store I decided it was time to up the anti and redesign the app to make use of new API’s and in particular tablet optimization.

After all the coding was finished it was time for the easy part, publishing to Google Play. I had developed and tested the app on a Samsung Galaxy Tab 7.7 (SCH-I815) I went ahead and published to the store. Once active I opened the store and noticed I could not find my app while on the tablet but I could on a phone. I opened a direct link and found the message “Your device isn’t compatibly with this version”.

This obviously is wrong. I developed all the tablet specific features on the same tablet, clearly it has worked. After Google’n my heart away I finally came across a section in the developer console talking about optimization and that I should develop my app for tablets. This struck me since I thought I had already done this. I was directed to which goes over hardware requirements. Then this line hit me with light bulb status.

…here’s the proper way to declare a dependency on android.hardware.telephony, such that you can still distribute the app broadly, even to devices that don’t offer telephony:

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

BINGO!! YOU NEED TO EXPLICITLY STATE IN THE MANIFEST YOUR APP DOESN’T NEED TELEPHONY TO OPERATE CORRECTLY I already had been using the below and thought that covered my bases however you need to explicitly say phone operation is not needed.

[code]<uses-permission android:name="android.permission.CALL_PHONE" android:required="false" />[/code]

Keep in mind that [code]uses-feature[/code] and [code]uses-permission[/code] are different! I thought by setting my CALL_PHONE to false I was done. Really this is asking “Can I have permission to place a phone call” where as the option is saying “It doesn’t if this device has phone hardware because I won’t need it anyway”.

So why could I test and develop the app without having the in the manifest this whole time. Because the Android system doesn’t look at these tags at all. These tags are put in there for filtration purposes to be used with Google Play and other distribution stores. By adding

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

to my manifest simply told Google Play it was ok to let devices without phone hardware to download this app. A bit long winded but now my app is available to tablets on the play store!