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

时间:2012-03-01 04:32:30

标签: android google-play

我正在为SPECIFIC品牌的手机开发一个Android应用程序 - 这是项目要求而不是我的决定。

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

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

有可能吗?

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

9 个答案:

答案 0 :(得分:31)

您不需要在应用程序代码中根据设备/制造商过滤您的应用程序,而只需在您自己发布应用程序时从Android市场开发者控制台https://market.android.com/publish/进行此操作。

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

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

This is the section in the main developer console

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

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

有关详细信息,请参阅Device Availability帮助页面,其中包含:

  

“设备可用性”对话框可以帮助两个强大的开发人员   方法:

     

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

     
      
  1. 设备可用性提供基于的兼容设备的动态列表   你的清单设置。例如,如果您的apk的清单指定   大屏幕尺寸,控制台将反映支持的设备   可以在Market中找到您的应用。

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

  4.   

答案 1 :(得分:29)

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

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

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

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

答案 2 :(得分: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();
}

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

答案 3 :(得分:2)

嗯,你可以采用合乎逻辑的方式。

首先使用getResources().getConfiguration()的硬件详细信息。现在你可以给出条件,如果你的硬件是这个mdel或名称然后继续。

答案 4 :(得分:2)

我编写了一个脚本,根据KrisWebDev的脚本按品牌禁用设备。

您必须找到所选品牌的<ol>,编辑并添加id="sarasa",然后运行此脚本以停用所有品牌:

var nodes = document.getElementById("sarasa"); for(var i=0; i < nodes.childNodes.length; i++) { if (nodes.childNodes[i].childNodes[0].getAttribute("aria-checked") == "false") { nodes.childNodes[i].childNodes[0].click(); } }

答案 5 :(得分:2)

我在本页的答案中使用了不同的部分编写了一个小脚本(感谢@Desty和@MichaelDePhillips)。脚本很快(我的计算机上的时间在100到200毫秒之间),您可以指定不切换的品牌。这是脚本:

console.time('Execution time');
var manufacturers = document.querySelectorAll('[data-manufacturer-group]');

for (var i = 0; i < manufacturers.length; i++) {
    var manufacturer = manufacturers[i];
    var brand = manufacturer.firstElementChild;

    if (brand.tagName == 'H3' && brand.textContent != 'Samsung') {
        console.log(brand.textContent);
        var tags = manufacturer.children;

        for (var j=0;j<tags.length;j++) {
            var tag = tags[j];
            if (tag.tagName == 'OL') {
                var devices = tag.children;
                for (var k=0;k<devices.length;k++) {
                    var device = devices[k];
                    if (device.tagName == 'LI') {
                        var checkbox = device.firstElementChild;
                        var attr = checkbox.getAttribute;
                        if (checkbox.tagName == 'CHECKBOX') {
                            checkbox.setAttribute('aria-checked', 'true');
                        }
                    }
                }
            }
        }
    } 
}
console.timeEnd('Execution time');

这是我的第一个javascript,欢迎所有反馈。

答案 6 :(得分:0)

当您要将应用程序上传到市场时,在发布页面上您将有可用的设备选项,您可以在其中添加/删除设备。通过这种方式,您可以按制造商和型号名称过滤掉设备。

答案 7 :(得分:0)

随着Google Play游戏机设计的不断发展,我没有成功完成之前的工作。我注意到只修改了第一个复选框状态。似乎每次点击都会对谷歌服务器进行POST。经过一些尝试,我发现添加一个速度允许循环复选框。 这是适用于我的Javascript。只需在浏览器的控制台中复制粘贴(使用CHROME和FIREFOX进行测试)。请注意,您必须更换&#34;下一页&#34;如果您的贷款不是英语,请在下一页的querySelector按钮中。

function uncheckAll() {
    const cbxSelector= 'input[type=checkbox]:checked:enabled'
    let checkBoxes = document.querySelectorAll(cbxSelector)
    if (checkBoxes.length > 0) {
        checkBoxes[0].click();
        setTimeout(uncheckAll, 20);
    }else{
      let nextPage = document.querySelector('button[aria-label="Next page"]:enabled');
      if(nextPage){
        nextPage.click();
        setTimeout(uncheckAll, 20);
      }
    }
}

uncheckAll();

如果您愿意检查所有复选框,只需更换&#39;输入[type =复选框]:选中:已启用&#39; 并使用&#39;输入[类型=复选框]:选中:禁用&#39;

答案 8 :(得分:0)

要在Google Play控制台支持的设备页面中选中/取消选中全部复选框,请使用以下脚本。此脚本适用于最新的Google Play控制台。只需在浏览器的控制台中复制粘贴(使用CHROME和FIREFOX进行测试)。

function runScript() {
    for (var bxs = document.getElementsByTagName("input"), j = bxs.length; j--;){
        if (bxs[j].type == "checkbox"){
            bxs[j].click();
        }

    }
    let nextPage = document.querySelector('button[aria-label="Next page"]:enabled');
               if(nextPage){
                 nextPage.click();
                 console.log("next page start");
                 setTimeout(runScript, 20);
               }

}

runScript();