2

Yesterday I released my app and realised that it is not available for my android 2.3.3 device. (Does not get listet in search results, and when I access the app page directly, android market tells me that it is not available for my device).

The lines of my manifest, which could be the issue (IMO) look like that:

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="8" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

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

The only thing I can think of which could make a difference is that I have no SIM card inserted on that phone- but I have Wifi access. (will try it with SIM card in the evening)

Any ideas?

stoefln
  • 14,498
  • 18
  • 79
  • 138

2 Answers2

9

Application requires autofocus camera unless you add `android:required="false" to the use-feature tag.

From documentation, see last if statement:

Filtering based on explicitly declared features

An explicitly declared feature is one that your application declares in a element. The feature declaration can include an android:required=["true" | "false"] attribute (if you are compiling against API level 5 or higher), which lets you specify whether the application absolutely requires the feature and cannot function properly without it ("true"), or whether the application prefers to use the feature if available, but is designed to run without it ("false").

Android Market handles explicitly declared features in this way:

If a feature is explicitly declared as being required, Android Market adds the feature to the list of required features for the application. It then filters the application from users on devices that do not provide that feature. For example:

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

If a feature is explicitly declared as not being required, Android Market does not add the feature to the list of required features. For that reason, an explicitly declared non-required feature is never considered when filtering the application. Even if the device does not provide the declared feature, Android Market will still consider the application compatible with the device and will show it to the user, unless other filtering rules apply. For example:

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

If a feature is explicitly declared, but without an android:required attribute, Android Market assumes that the feature is required and sets up filtering on it.
eyespyus
  • 1,576
  • 19
  • 20
  • sounds promising - will try this later on! – stoefln Jan 18 '12 at 09:25
  • worked! be aware that the setting took quite some time (a day or so) to take effect on my phone. guess there are some caches in between the market and the phone... – stoefln Feb 09 '12 at 10:14
0

The minSdkVersion="7" and targetSdkVersion="8" but you device is 2.3.3 which equal sdk version 10

This will help you to know the sdk versions

so change the versions range in your manafist file

 <uses-sdk android:targetSdkVersion="8"  android:minSdkVersion="7" android:maxSdkVersion="10" />
Basbous
  • 3,927
  • 4
  • 34
  • 62
  • I don't think that is the issue. The android market page tells me: "Requires Android: 2.1 and up". Apart from that I can install it on my android 2.2 phone – stoefln Jan 17 '12 at 11:51
  • @stoefln: Basbous answer make sense, you can check the solution by exporting a non singed APK and test it on 2.3.3 device. – Ahmad Kayyali Jan 17 '12 at 12:37
  • @AhmadTK I still don't get it. Can you elaborate your argumentation? – stoefln Jan 17 '12 at 13:02
  • OK, lets make this clear [Timeline Cloud](https://market.android.com/details?id=com.Genie9.TimelineFilesViewer) is an application that I have built, the requirement for this app is to run on all device that runs android 2.1 - 2.3.7 (you can check that in the market and I have simply set the sdk values as follow: `` – Ahmad Kayyali Jan 17 '12 at 13:23
  • which indicates that I my application target sdk is **Froyo (8)** and my app is able to run on **Eclair (7)** and as max version to be **Gingerbread (10)** – Ahmad Kayyali Jan 17 '12 at 13:24
  • do you know how to `export unsigned android apk`? – Ahmad Kayyali Jan 17 '12 at 13:25
  • @AhmadTK yes I do. But sorry, I still don't get what the point is of exporting a unsigned apk...? what I do know though, is the meaning of min and maxSdkVersion, but I don't see why setting a maxSdkVersion would bring any improvement. The app is available for my v2.2 and on a v3 device, so why is it not on a v2.3? – stoefln Jan 17 '12 at 16:30
  • let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/6797/discussion-between-ahmadtk-and-stoefln) – Ahmad Kayyali Jan 17 '12 at 16:48