I made an android app for ordering a cab. I uploaded it on goole play and everything was fine until i tried to find the app over a tablet. I cannot find the app on google play. I googled the problem and i put the screen size in the manifest but its still not working.
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true">
<activity
android:name=".splash"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name=".order"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name=".personal"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name=".flight"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name=".details"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen"></activity>
</application>
<supports-screens
android:anyDensity="true"
android:xlargeScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
Issue is in "android.permission.CALL_PHONE" permission that might not be available for tablets. You should add additional entry that shows that is not absolutely required feature and then handle that scenario in your code when you are accessing those features.
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
Android documentation for <uses-feature>
You should place screenshots for the Tablet Portion as well as the requirements needed by the Google Play for Tablets.
You should put all requirements for tablet and create .xml file for tablet in app layout folder and Screenshot for tablet. see more from documentation
Related
I have uploaded an App on Google Play Store. I able to download it in mobile phone but it is not available for Tablets.
When i try to download it in Tablet its shows an error something like "This app is only design for phones"
Please help me.. what have i done wrong??
Here is my AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.AnTim.mediteam"
android:versionCode="3"
android:versionName="1.2" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
android:name="com.AnTim.mediteam.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.AnTim.mediteam.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name="com.AnTim.mediteam.Controller"
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name="com.AnTim.mediteam.MainActivity"
android:configChanges="orientation|keyboardHidden"
android:label="#string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DELETE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="com.idrivecare.familypro" />
</intent-filter>
</activity>
<activity
android:name="com.AnTim.mediteam.Internet_connection"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Internet"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Preference"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.GuestMenu"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Privacy"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Terms"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Forgot_password"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Registration"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Sucessfull_register"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Patient_menu"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Web"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.AnTim.mediteam.Best_doctor"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.AnTim.mediteam" />
</intent-filter>
</receiver>
<service android:name="com.AnTim.mediteam.GCMIntentService" />
</application>
According to this:
http://arstechnica.com/gadgets/2013/11/google-play-rolls-out-designed-for-phones-tag-of-shame-on-tablets/
"Apps that don't include certain tablet enhancements will display a "designed for phones" tag on the tablet version of the Play Store, making users with tablets less likely to install them."
I guess this is the reason why you get this message. You probably didn't include those "tablet enhancements"
Your app uses feature "android.hardware.telephony". If the tablet doesn't have the dialer and a data network the app will not be compatible in that device.
I know I'm slightly late, but better late than never.
As suggested by #SauravGhimire it was the telephony access that broke compatibility.
This would be true if required = true. However, your code specifies required = false:
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
This shows that the app uses telephony on compatible devices, and on devices that doesn't have telephony access, your app has something set up that doesn't use telephony on unsupported devices. This would mean you maintain support for tablets.
The screen sizes supported would help Google Play see that you have added support somehow for tablets. AFAIK, declaring that tag and not adding special layouts doesn't show designed for tablets, nor does it show designed for phones. This is the point where your app supports both phones and tablets, but isn't specifically designed to take advantage of the extra room on tablets.
As #Hans1984 said, you may not receive installs if your app gets a "designed for phones label".
Not sure how this worked in 2015, but now you can download apps even if they are designed for phones. The "designed for phones" tag is just a way that tablet users can be "warned" that this app may not be as good on a tablet as on a phone.
I have downloaded "designed for phone" apps on my tablet, and I have done it on android 5, 6 and 7 without any problems. Maybe some devices have a warning like that (or some don't). Could also be a problem with the custom permission you have (com.AnTim.mediteam.permission.C2D_MESSAGE)
It is very hard to say why exactly you got the error, but you have done everything in the right way that should prevent the "designed for phones" label, and (assuming you don't have special tablet layouts) you will nto get the "designed for tablets" label either (the last label means it is also designed for tablets, that there is special support for it. There is also support for phones). Could be that an older version (beta/alpha/production (old version)) didn't support it and you tried to download too soon. Google Play needs a lot of time to process updates. Adding layouts for tablets is also a fix for this.
I am writing a media player application. It is best to see in 10 inch tablet, 7 inch tablet, 5 inch phone. So I wanna restrict my app to install to those devices only. How can I do that?
Here are my current manifest file values
<application
android:hardwareAccelerated="true"
android:allowBackup="true"
android:icon="#drawable/logo_new"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:hardwareAccelerated="true"
android:name="VideoActivity"
android:label="#string/app_name"
android:theme="#android:style/Theme.Holo.Light.NoActionBar.Fullscreen"
android:screenOrientation="sensorLandscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Try this:
Add the following things on your AndroidManifest.xml before <application> tag :
<supports-screens android:smallScreens="false"
android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"
android:requiresSmallestWidthDp="480"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
You can also follow the reference links::
http://android-developers.blogspot.in/2011/09/preparing-for-handsets.html
The above code automatically filters devices by Play Store.
When I published my app to Google play store and I tried downloading it on my Google Nexus 7 , I get the message "Your device isn't compatible with this version".
My Manifest file is declared like this:-
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="#drawable/ic_icon"
android:label="#string/app_name"
android:theme="#style/ApplicationTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name=".SplashScreenActivity"
android:label="#string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".HomeActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".MyFormsTabActivity"
android:screenOrientation="portrait" >
</activity>
</application>
This is the problem :
<uses-permission android:name="android.permission.CAMERA" />
This implies using the camera feature, which is different from the front-facing camera, as the N7 has. Make the camera feature explicit and optional. Details: http://developer.android.com/guide/google/play/filters.html
Got it..!!
http://developer.android.com/guide/google/play/filters.html
Well android permissions normally are not used as filters if you have specified attribute. In above case what happened was that I had declared the CAMERA permission , but Google Nexus 7 didn't had a camera( only has front camera). so Google Play filtered out the device.
So In order to solve this problem the best practice would be,
**
If in our application manifest we have asked the permission to use any hardware feature then We should also declare the uses-feature attribute for that with android:required="false".
**
I recently uploaded my android app to the marketplace https://market.android.com/details?id=com.DGNT yet my friends cannot install it on their devices (says their phone is incompatible). The site even says my own phone is incompatible for my own app, even though i have compiled it through eclipse and sucessfully installed the apk on my phone and tablet. (telus LGE LG-p500h and asus transformer tf101)
Is there something wrong with my app or should i just wait a little longer to see what happens? Ive been told my manifest could have something to do with it so here is what i got.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.DGNT"
android:versionCode="2"
android:versionName="1.01">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<application android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:name="com.DGNT.MainScreenActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.DGNT.QuickStartActivity"
android:label="Quick Start"
android:screenOrientation="portrait">
</activity>
<activity android:name="com.DGNT.ManagePlayersActivity"
android:label="Manage Players">
</activity>
<activity android:name="com.DGNT.PlayerListActivity"
android:label="Start From Player List"
android:screenOrientation="portrait">
</activity>
<activity android:name="com.DGNT.EditPlayersActivity"
android:label="Edit Players">
</activity>
<activity android:name="com.DGNT.CreditsActivity"
android:label="Credits">
</activity>
<activity android:name="com.DGNT.HelpActivity"
android:label="Help">
</activity>
<activity android:name=".AboutActivity"
android:label="About">
</activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
</manifest>
You should definitely have a <supports-screens /> element in your manifest to list the screen sizes your app is compatible with. Try adding this just after your opening manifest tag:
<supports-screens
android:xlargeScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
That should open up the app for any type of screen. Obviously I'm assuming here that you want it available for any screen size, so tweak as needed! More details here.
Hope that solves it for you
I have published my app on android market. I was able to download it to my phone(samsung galaxy sl [i9003]) but, recently I updated my phone through kies to 2.3.6 from 2.3.5 and now market is saying your app is incompatible with my device. What should I do to make it compatible ?
My phone is rooted and have market version 3.3.12 . Do I need to change any properties of app in manifest ?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="XXX"
android:versionName="1.1.1" android:versionCode="7">
<uses-sdk android:minSdkVersion="7"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<supports-screens android:smallScreens="true" android:normalScreens="true" android:anyDensity="true" android:largeScreens="false"></supports-screens>
<application android:icon="#drawable/icon" android:debuggable="false" android:label="#string/app_name">
<activity android:name=".SplashActivity"
android:label="#string/app_name" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="MenuActivity" android:screenOrientation="portrait"></activity>
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard" />
<activity android:screenOrientation="portrait" android:name=".BrowseMovies"></activity>
<activity android:name="SongDisplayDetails" android:screenOrientation="portrait"></activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity android:name="SearchDataActivity" android:screenOrientation="portrait"></activity>
</application>
There is options in market console: when you publish your app, in section "publish params" there is list of all known devices, and there you can see all incompatible devices, and reason why they are incompatible.
// I'm not sure in names of sections in market case I have Russian version of market console. Section "publish params" goes just before "Contacts"
Find out which devices are incompatible by clicking the "compatible devices see List" in Developer Console when you are able to "Upload APK".
This lists all those it will install on and also those it won't. For me this was teh Key step, find out which ones and whats "wrong" with them.
In my case the use of the phone was optional. It had the uses-permission for phones and recording for example which might not be needed. Some use cases need these, some don't.<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CALL_PHONE" />
This was what was causing it to exclude all my tablets.
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
This seems to have solved it, there are now no incompatible devices in the Play.Store.
Now I just need people to download and use it!