26

I am developing an android app for SPECIFIC brand of phones - that's the project requirement not my decision.

So I need to be able to make the app available in the android marketplace only to those devices that are produced by that SPECIFIC manufacturer.

I don't seem to be able to find how to do that.

Is it possible?

P.S. I can retrieve the device make in the android code. So I suspect that the market app should be able to filter by the device make as well. I just don't know if it actually does (would be great if it does).

Peter O.
  • 32,158
  • 14
  • 82
  • 96
Nar Gar
  • 2,591
  • 2
  • 25
  • 28
  • Here is a good article http://mobile.tutsplus.com/tutorials/android/android-essentials-publishing-to-specific-devices/ . Similar to accepted answer – Pankaj Kumar Feb 14 '13 at 13:16
  • In short, there is as of this writing, no way to do this through the Google Play Developer console. While there are some tricks here to use scripts to automate hitting the 'Exclude' button for thousands of devices one at a time, there is no whitelisting concept, and new devices are included by default. The only way to really accomplish this is targeting a unique hardware feature, but this of course needs to be defined in the device's firmware. – Paul Lammertsma Aug 11 '17 at 12:17

9 Answers9

31

You don't need to filter your app based on device/manufacturer in the application code, instead you can do it from the android market developer console - https://market.android.com/publish/ just when you publish the app itself.

There is a 'Supported Devices' section on the developer console, which shows you a list of all the devices which can access the android market. You can then filter out devices or manufacturers that are not compatible with your app

This is the section in the main developer console:

This is the section in the main developer console

Here you can exclude devices and/or manufacturers from being able to see your app

Here you can exclude devices and/or manufacturers from being able to see your app

For more information please refer to the Device Availability help page which says:

The Device Availability dialog can help developers in two powerful ways:

Understand which devices can find your app in Android Market

  1. Device Availability provides a dynamic list of compatible devices based upon your manifest settings. For example, if your apk’s manifest specifies a large screen size, the console will reflect the supported devices that can find your app in Market.

  2. You can also use the dynamic search feature to see the devices that your application will not be available to. You can search by manufacturer, the design name (E.g. “Passion”), or the actual public device name (E.g. "Nexus One"), to see if your manifest settings filtered a device. Filter problematic or non-compatible devices This feature provides a device-specific administration option to developers. When you add a device to the “Manually Excluded Devices” list, your app will not be available to that excluded device in Market. This is primarily intended to help developers provide the best user experience possible, by helping developers filter out devices known to have compatibility problems.

Soham
  • 4,940
  • 3
  • 31
  • 48
  • This is comprehensive... Thanks for the help Soham. – Nar Gar Mar 02 '12 at 00:11
  • 8
    While this still pertains, if you wanted to do a select all or simply remove numerous manufacturers at once, it seems like a daunting process of one by once exclusion. – Jay Snayder Nov 22 '13 at 21:20
  • Can you exclude one set of devices for v1.0 of your app and a different set of devices for v2.0 of your app? – Brendan Weinstein Jan 23 '14 at 19:04
  • @Brendan Did you ever find a way to do this? As far as I can tell you can only exclude devices on a per app basis, not per apk... – Bas Smit May 12 '14 at 07:32
  • @soham: What if the new device is launched. In that case by default it will be set to be enabled and that will be allowed to download. – Vaibs Nov 03 '16 at 07:19
30

In the Supported Devices section of the developer console page, you can view the list of all devices. This loads over 2,000 slider-type checkboxes which are initially set to enabled. Unfortunately there doesn't seem to be a "disable/enable all" option in the interface...

...Instead, I used Firebug's inspector tool to get the classname for these slider objects (can't recall what it was now - two random uppercase acronyms), then executed an expression in the Javascript console which toggled the state of every slider. Something like:

switches = document.getElementsByClassName("ABC DEF"); for(i = 0; i < switches.length; i++) switches[i].click();

This froze the browser for a minute or two, but afterwards, every phone was marked as unsupported. Then you can enable the phone(s) you need to support.

Desty
  • 1,653
  • 18
  • 16
  • 2
    I wish I would have seen this comment before I took the time to write my own script. This saved my company a lot of time. Here is the script I wrote, but yours works too. var nodes = document.getElementsByClassName("GLBE-H2DLBB GLBE-H2DMBB"); for(var i=0; i < nodes.length; i++) {    nodes.item(i).setAttribute("aria-checked","true"); } – Michael DePhillips Dec 14 '13 at 20:00
  • @MichaelDePhillips: Your way is probably much quicker - thanks for writing it up :) – Desty Dec 16 '13 at 12:58
  • 2
    It is quicker, but it seems it only toggles the switches visually and not functionally. Looks like yours is the only one that works! Thanks for posting this, I would have been stumped. – Michael DePhillips Dec 16 '13 at 20:09
  • 1
    Thanks for posting this guys! I like the script posted by @Desty as it marked everything as unsupported. – rup3rt Mar 31 '14 at 06:19
  • For folks who don't know much about html/dom (like me), note that you will need to change the class name (ABC DEF) mentioned in this solution to match the class name found in the webpage served to your browser. To find the correct class name, search through the DOM (using Firebug) until you find a long list of
  • 's which hold spans that have role="checkbox"; the class name you should use is the class of that span.
  • – Jo Jo Aug 07 '14 at 21:10