Optimize for Tablets - android

I am creating an app which I want to have support for Tablets as well. I have followed the steps discussed on developer.android.com as well as many questions in SO. I am not able to get my head around as to why Play Store is still reporting that
Your Production APK needs to meet the following criteria:
Any required hardware features are normally available on tablets.
My Manifest file has the following declarations
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<uses-permission
android:name="android.permission.READ_SMS" android:required="true" />
<uses-permission
android:name="android.permission.READ_CONTACTS" android:required="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:xlargeScreens="true" />
<uses-feature
android:name="android.hardware.telephony" android:required="true" />
Since my app uses Telephony features, I have marked the required attribute as true here. If anyone has faced a similar problem and able to get it fixed kindly provide inputs.

Tablets don't "normally" have telephony features. They're tablets, not phones. Thus, if you require telephony hardware, then the app won't be presented to tablets which don't have telephony features. This is documented.

Use the code as follows:
uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<uses-permission
android:name="android.permission.READ_SMS" android:required="true" />
<uses-permission
android:name="android.permission.READ_CONTACTS" android:required="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:xlargeScreens="true" />
<uses-feature
android:name="android.hardware.telephony" android:required="false" />
I have just changed the permission for using feature to requires="false".
By doing this, your app will be available for use and download on the tablet devices having calling feature and not on tablets not having the same.

Related

Android app compatibility issue on Nook HD+ and Asus TF300T

I have a weird App compatibility issue.
As per the Developer console, my app seems to be compatible and available on the Nook HD+ and Asus TF300T. It shows a "Green" checkmark against these two.
However, two users have gotten back saying that the Play Store shows my app as incompatible with their device.
This is what I have:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
<uses-sdk android:minSdkVersion="7" />
<application android:name="{application_class}"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name" >
<activity...
Any idea what could be wrong?
Think I figured out the reason:
aapt dump badging <myapk>
supports-screens: 'small' 'normal' 'large'
I was surprised that xlarge is missing from the above supports-screens.
And of course, Nook HD+ and Asus TF300T are >9in devices! So this may be the reason.
Now I have explicitly added the following in my manifest and aapt shows xlarge:
<supports-screens android:smallScreens="true"
android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" />
xlargeScreens was introduced in API 9 and MAYBE this is why xlarge was false by default?
Weirdly, the dev console shows it as supported.
Now off to test it against the user's device.
Ever get this to work? Just a thought, can you use the permission "READ_PHONE_STATE" on a Nook?

Why is a specific device marked as 'unsupported' in Google Play Store for Android

Does anyone know how you can see why Google Play Store is marking specific devices for an app you created as 'not compatible' ?
I created an app and one of my testdevices was a GalaxyTab2. On this device all functions of the app are working no problem when you just put the apk on the device using a USB cable/or just downloading it from a website.
However when I upload the app to playstore the GalaxyTab2 is listed as an unsupported device. So GalaxyTab2 users are unable to install the app.
In the Google Play Developer Console you can see an overview of unsupported devices. But it seems that you can't get any info 'why' the device is unsupported.
This currenlty lists 1000 devices. Of these a lot will be unsupported due to the fact that their Android version is too old. But from some devices (like the GalaxyTab 2) I am sure they can and run the apk no problem.
Some lines of my manifest:
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="16" />
Try adding:
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
To your manifest. Your FLASHLIGHT permission may imply that it is a required feature, and as the Galaxy Tab 2 doesn't have a flash, it'd be incompatible. Same for autofocus, as pointed out by #323go.
The problem can be with the feature requirements for certain permissions.
For example
<uses-permission android:name="android.permission.CAMERA" />
may include the requirement of AutoFocus, so I would try to add
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
to the AndroidManifest.xml.
Also the permission
<uses-permission android:name="android.permission.FLASHLIGHT" />
may include the requirement of flash hardware so I would add
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
as well.
Here you can find a list that shows all permissions that imply Feature Requirements
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions
Remove android:allowBackup="true"

Android Market - Application isn't available for devices

I published my APK to Android market. I can search it via https://play.google.com/store/search?q=[package name], but I can't install it on my Nexus One device which running Android OS 2.3.6, the popup shows not compatible with your device. The manifest file is configured as below:
<supports-screens
android:largeScreens="true"
android:smallScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:anyDensity="true"
/>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
What problem in my configuration made My Nexus One device is filtered?
There's nothing wrong with your manifest; I'd wager you have Copy Protection enabled. From the documentation:
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.
Since the Nexus One is a developer device, it will show as incompatible. I ran into this same issue on my Galaxy Nexus.
Add this to your manifest
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />//=======> the target version is your wish(> 10)

Android Market filters app - Telephony?

I have the following Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.MainActivity"
android:versionCode="1"
android:versionName="1.0.0" >
<supports-screens
android:anyDensity="false"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="false"
android:smallScreens="true"
android:xlargeScreens="true" >
</supports-screens>
<uses-permission
android:name="android.permission.RECEIVE_SMS"
android:required="false" >
</uses-permission>
<uses-permission
android:name="android.permission.SEND_SMS"
android:required="false" >
</uses-permission>
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
android:required="false" >
</uses-permission>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
android:required="false" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission
android:name="android.permission.CALL_PHONE"
android:required="false" >
</uses-permission>
<uses-sdk android:minSdkVersion="7" ></uses-sdk>
<receiver
android:enabled="true"
android:name="com.myapp.receiver" >
<intent-filter android:priority="10" >
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data
android:host="localhost"
android:port="12345"
android:scheme="sms" />
</intent-filter>
</receiver>
If i uploaded it to the Android Market the App is not visible for tablets like the Galaxy Tab 10.1.
I think the screen-settings are alright, because i have a second app with the same settings and this one is visible.
So i think it is because of the Permissions..
Can somebody help me?
What about adding this to your manifest:
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
(To be added right under your manifest tag)
The Market seems to infer that telephony support is required whenever certain permissions are added to the AndroidManifest.xml, e.g. by default, READ_SMS or CALL_PHONE both seem to cause the Market to only offer the app to telephony enabled devices.
The best way to check if this is happening is to log onto your Android Market publishing account, and look for the "Required device features" section:
Now look at the "Show devices" link above. This is really useful for checking exactly which device models your app can be downloaded on.
Click "Show devices", and then search for the devices that you are interested in. The "Xoom" is a good one to check as at the moment it is wifi only, and doesn't currently include any telephony support:
Other devices can be more tricky. The Samsung Tabs have a range of devices, some with telephony capabilities (you need to click on the "Samsung" link under the "Manufacturer search results" to see these lists):
...and some without telephony (which in this case makes them unsupported for my app):
The fix is to set telephony to be optional in the AndroidManifest.xml for your application:
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
Even when Android thinks a device doesn't support telephony (e.g. a wifi-only Samsung Tab), it might support telephony in a non-native way (e.g. Skype). For more information, see my answer here:
Android Device phone call ability
try to add this:
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
/>

my app do not show in android market but only in some cases

I Have 2 htc tattoo, and I have the next problem, I've made an app and when I upload the app to the market the app is showing on one tattoo but not on the other. Any Ideas?
I have activated all available markets, and deactivated the protections.
My manifest has the next configuration:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:smallScreens="true"
android:anyDensity="true" />
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="7"/>
Just to be sure, as unlikely at it is-you're not running Froyo (2.2) on your htc tattoo? Its API level is 8 as I'm sure you're aware.
Check if you have a folder named /lib in your apk, its a weird thing the Market application checks for, and if it exists your application won't display.
Ok the problem with tattoo is that it do not support autofocus and it is necesary add in the manifest:

Categories

Resources