views:

182

answers:

4

I want to publish an application that specifically runs only on 800x480 or higher screens.

I don't want users with 480x320, 320x240 etc devices to get it from Android Market. How do I configure it?

Market Filters seems to have the answer but I still don't get it.

A: 

UPDATE: This does not work (see comments below)

In your manifest:

<supports-screens 
     android:largeScreens="true"
     android:normalScreens="false" 
     android:smallScreens="false"/>
iPaulPro
According to Table 1 in http://developer.android.com/guide/practices/screens_support.html , 240dpi WVGA (480x800), 3.3"-4.0" diagonaland FWVGA (480x854), 3.5"-4.0" diagonal screens are considered "normal", not "large". If I'm not wrong, using normalScreens="false" as you mentioned will prevent those devices from discovering the app. Am I correct?
yuku
Hmm.. you are correct. My mistake. I'm not actually sure you can do this. Voting up the question.
iPaulPro
+6  A: 

Unfortunately, in the current state of the Market, you aren't able to do this. According to the <supports-screens> reference doc - you can only filter by the "screen size", and as you noted, the WVGA/FWVGA resolutions are "normal."

You can have your app detect it programatically using the DisplayMetrics class using heightPixels and widthPixels but that's only after it's been purchased/installed, which is what I assume you want to avoid.

Chris Peredun
+2  A: 

I havent tried this on Android but I think this should work:

  • Make your app a trial app, so that it is free to download but not free say after one day.
  • Now in your app do one of the two things, on app start either detect the screen size and just display a generic message saying this screen resolution is not supported and display the exit button. Another way to do this is is to have layout-480x320 folder display the same message and provide an exit button to exit the app. This way you can have all non supported screen sizes display this message and have no functionality. The default layout folder will have the UI for your supported screen sizes of course. This way on non supported devices you can also say what all handsets are supported in the message.
  • Dont forget to have <supports-screens android:anyDensity="false" /> in your manifest file.
  • Now when user downloads your app on non supported devices he/she will not be charged because of one day trial and also will be clearly shown that his/her device is not supported and can exit and uninstall the app.

This wont make your app invisible on non supported resolutions but allows for clean and simple mechanism to communicate to user.

omermuhammed
This may hurt your positioning in the Android Market. In my personal publishing experience, the "active user" percentage seems to be one of the most important factors in the Market algorithm.
iPaulPro
A: 

As far as an android app is concerned, I'm not sure. Good question.

However if you're writing a browser app in HTML/Javascript, you can check in Javascript using a combination of the screen.width/height, document.documentElement.clientWidth/Height, and a few other methods. If you really wanted to, this would be a way of blocking your site from low-res machines.

You can also specify CSS to react differently according to the screen size using media queries, although that would be less about blocking and more about adapting to suit the environment.

The Quirksmode website has a good article about the intricacies of dtermining screen size and other attributes in a mobile browser environment.

Spudley