如何限制Android应用程序到特定设备?

Nar*_*Gar 25 android google-play

我正在开发针对SPECIFIC品牌手机的Android应用程序 - 这是项目要求而不是我的决定.

因此,我需要能够在Android市场中将该应用程序仅用于由该SPECIFIC制造商生产的那些设备.

我似乎无法找到如何做到这一点.

可能吗?

PS我可以在android代码中检索设备make.所以我怀疑市场应用程序应该能够通过设备make过滤.我只是不知道它是否确实如此(如果它确实会很好).

Soh*_*ham 31

您不需要在应用程序代码中根据设备/制造商过滤您的应用程序,而是可以从Android市场开发者控制台 - https://market.android.com/publish/进行,就在您发布应用程序本身时.

开发者控制台上有一个"支持的设备"部分,其中显示了可以访问Android市场的所有设备的列表.然后,您可以过滤掉与您的应用程序不兼容的设备或制造商

这是主开发者控制台中的部分:

这是主开发者控制台中的部分

在这里,您可以排除设备和/或制造商无法看到您的应用

在这里,您可以排除设备和/或制造商无法看到您的应用

有关更多信息,请参阅设备可用性帮助页面,其中说明:

Device Availability对话框可以通过两种强大的方式帮助开发人员:

了解哪些设备可以在Android电子市场中找到您的应用

  1. 设备可用性根据清单设置提供兼容设备的动态列表.例如,如果您的apk的清单指定了较大的屏幕大小,则控制台将反映可在Market中找到您的应用程序的受支持设备.

  2. 您还可以使用动态搜索功能查看您的应用程序无法使用的设备.您可以按制造商,设计名称(例如"激情")或实际的公共设备名称(例如"Nexus One")进行搜索,以查看您的清单设置是否过滤了设备.过滤有问题或不兼容的设备此功能为开发人员提供特定于设备的管理选项.当您将设备添加到"手动排除的设备"列表中时,您的应用将无法在Market中被排除的设备上使用.这主要是为了帮助开发人员过滤掉已知存在兼容性问题的设备,从而帮助开发人员提供尽可能最佳的用户体验.

  • 虽然这仍然属于,如果你想做一个选择全部或只是一次删除众多制造商,这似乎是一个一次排除的艰巨过程. (7认同)

Des*_*sty 29

在开发人员控制台页面的" 支持的设备"部分中,您可以查看所有设备的列表.这将加载超过2,000个滑块类型的复选框,这些复选框最初设置为启用.不幸的是,界面中似乎没有"禁用/启用所有"选项...

...相反,我使用Firebug的检查器工具来获取这些滑块对象的类名(无法回想它现在是什么 - 两个随机的大写首字母缩略词),然后在Javascript控制台中执行一个表达式,切换每个滑块的状态.就像是:

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

这会冻结浏览器一两分钟,但之后,每部手机都被标记为不受支持.然后,您可以启用您需要支持的手机.

  • 我希望在花时间编写自己的脚本之前我会看到这个评论.这为我公司节省了很多时间.这是我写的剧本,但你的作品也是如此.var nodes = document.getElementsByClassName("GLBE-H2DLBB GLBE-H2DMBB"); for(var i = 0; i <nodes.length; i ++){nodes.item(i).setAttribute("aria-checked","true"); } (2认同)
  • 它更快,但它似乎只能在视觉上切换开关而不是功能.看起来你的是唯一有效的!感谢发布这个,我会感到难过. (2认同)

Kri*_*Dev 19

以下是Desty答案的改进:

  • 自动检测班级名称
  • 真的取消选中:即使您已经取消选中某些方框也能正常工作

码:

var className = document.evaluate( 'string(//li[@data-device-id]/checkbox/@class)', document, null, XPathResult.STRING_TYPE, null ).stringValue;

switches = document.getElementsByClassName(className);
for(var i=0; i < switches.length; i++) {
   if (switches.item(i).getAttribute("aria-checked") == "false") switches[i].click();
}
Run Code Online (Sandbox Code Playgroud)

此脚本大约需要1分钟才能执行.从浏览器Javascript控制台运行它.