I have an app that seems downloadable to all phones except the HTC Sensation. My friend with the Sensation also has 2 other phones (of a lower SDK type) that he is able to install to. I can't figure out for the life of me why. I'm trying to get my hands on another 2.3 or above phone to see if its an issue with gingerbread. Here are the relevant parts of my AndroidManifest (only the activities are excluded):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="x.x.x.x"
android:versionCode="8" android:versionName="1.3.3">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="#drawable/icon" android:label="#string/app_name" android:theme="#android:style/Theme.NoTitleBar">
<activity items.... />
</application>
<uses-feature android:name="android.hardware.telephony" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<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.SEND_SMS"/>
</manifest>
Does anyone have any ideas why this could be?
Are you missing a <supports-screen> element in your manifest?
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
I had the same problem before where I couldn't even download my own app ;__;
Joe
For fun try to add:
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />
These kinds of bugs can be hard to solve ;)
I have a Sensation and my app shows in Market for my phone. Here's my <supports-screens> entry:
<supports-screens android:anyDensity="true"/>
... and that's it. Works fine. If that doesn't work for you, there's something else going on.
Related
I'm trying to publish an app to Play Store, but when I upload the app, the Nexus 7 and other devices are shown as not compatible. The app should be restricted to tablets, as its interface is not not for phones. I didn't set requirements for hardware not present in Nexus 7 and I support all displays from 600dp up.
I found similar questions, but all related to camera or phone permissions... any ideas?
This is my manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.mypackage.stuff"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="18" />
<supports-screens android:smallScreens="false"
android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-feature android:name="android.hardware.telephony" android:required="false"></uses-feature>
<application> Stuff.... </application>
</manifest>
I found the problem and solved it. I felt very stupid when I realized the problem was I weren't incrementing the "versionCode" field in the AndroidManifest.xml.
The Android Developer Console shows a strange behaviour: if you upload an apk to an unpublished application without incrementing the versionCode, the apk isn't replaced, and no error is shown. So the apk remains the first one uploaded, and all the changes made in the new apk are lost.
I've published my app on google playstore, the app is now visible to phones, but I cannot see it with my tablet(Nexus /). Here is my manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.application.myapp"
android:versionCode="3"
android:versionName="2.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="13" />
<supports-screens
android:anyDensity="true"
android:xlargeScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"/>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app"
android:supportsRtl="true" >
<activity.......>
</activity>
</application>
</manifest>
How can I make it visible to tablets?
This Stack Overflow question is very similar to yours. It suggests that besides screen sizes, you should make sure that your permissions and features are all things that the particular device can use. (For example, setting the camera feature would cause devices without cameras to be excluded.)
Manifest and supported devices showed in Android market - Stack Overflow
I am pretty sure it's the WRITE_APN_SETTINGS permission. Requesting it only worked on older devices, nowadays (>= Android 4.0 I think) it is only granted to system apps.
I have a relative simple App that was already in the Play-Store of Google.
Now I've made an Update of this App.
One Point of this Update was that I include the ZBar-Scanner. The Rest of the changes were minimal and shouldn't have any influence on my problem.
I just put the newest verison of my App in the Play-Store and I get following warning:
"Warning: Active APKs support fewer devices than previously active APKs. Some users will not receive updates."
I've downloaded ZBarAndroidSDK-0.2.zip from sourceforge.net (http://sourceforge.net/projects/zbar/files/AndroidSDK/) and import it to my project as it is explained in the README-File.
I tested my App local on my HTC Wildfire S (->Version 2.3.5), on Samsung Galaxy 3 (GT-I5800 -> Version 2.2) and on my Galaxy Nexus (-> Version 4.2). There was never a Problem. Everything worked.
I also tested the exported APK and had no Problems.
Now I add this APK to the Play-Store and updated my App and I get the warning for the tested devices. Neither my HTC Wildfire, nor my Samsung Galaxy 3 can update the new version.
Can anybody help me and explain me whats the Problem?
Thanks a lot!!!
EDIT:
My Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.myproject"
android:versionCode="5"
android:versionName="2.0"
android:installLocation="preferExternal"
>
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<application
android:uiOptions="splitActionBarWhenNarrow"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
>
<!-- enable the search dialog to send searches to SearchableActivity throughout the application -->
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
<activity
android:label="#string/app_name"
android:name=".MainActivity"
android:screenOrientation="portrait"
android:theme="#style/Theme.NoBackground">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="#string/app_name"
android:screenOrientation="landscape"
android:name=".zbar.ZBarScannerActivity">
</activity>
</application>
And the Manifest of ZBar:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.sourceforge.zbar.android.CameraTest"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application android:label="#string/app_name" >
<activity android:name="CameraTestActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
First of all, any change in the devices used must be a result of the manifest. That is the only thing that the Android market (Google Play) uses to determine what devices an app can go on. As you showed, the one difference was that you had a requirement to autofocus. If you change this line to the following, it should work.
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">
Essentially, this will allow you to use that feature, but not make it required. This should allow full compatibility with all previous devices. For more information, see this answer.
I should also note that I saw the camera wasn't required by your main app, but is required by zbar. This could also make a difference.
I had this problem with my application (with Zbar scanner) on tablet Zenithink C93 (http://www.zenithink.com/Eproducts_C93.php). I needed create application compatible with Zenithink devices.
I published app in Play-Store of Google. When I tried install application on Zenithink C93 I got error: "This item is not compatible with your device"
My manifest had this line:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">
But it didn't help me.
Also I had this support-screens tag:
<supports-screens
android:smallScreens="false" android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
Strangely, but after a long search solution I completely removed support-screens tag and put android:required="false" for <uses-feature android:name="android.hardware.camera"/> application became compatible with Zenithink device.
Now my Manifest looks like this:
...
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<application...
This is not a good solution, because application will be compatible with almost all devices, but maybe it will help someone.
we have developed and Android app, first time, great fun. Now we are giving it to friends and at first everything seems alright. But two guys with fairly modern phones (one is a Desire HD) claim, that the market greys out the app and says it wouldn't be compatible with the device.
That is odd to me, because I can install it from the market on very low-end devices (e.g., tested with Huawei U8650).
The relevant part of the Manifest.xml should be
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.android.app"
android:versionCode="4"
android:versionName="0.1" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-sdk
android:maxSdkVersion="15"
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
<application
android:debuggable="true"
android:icon="#drawable/appicon"
android:label="#string/app_name" >
<activity>
...
</activity>
</application>
</manifest>
What am I missing?
Is there a website/feature/tool that let's me check out compatibility with existing devices (i.e., match known requested features of devices against my app)? I took a look with aapt which tells me nothing I didn't know from the Manifest.
Help highly appreciated!
Thanks!
You have a cool menu in your Android Market console:
Click on the show device link ...
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: