Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将android应用程序限制为特定的设备制造商?_Android_Google Play - Fatal编程技术网

如何将android应用程序限制为特定的设备制造商?

如何将android应用程序限制为特定的设备制造商?,android,google-play,Android,Google Play,我正在为特定品牌的手机开发一款android应用程序——这是项目要求,不是我的决定 因此,我需要能够在android marketplace中仅向特定制造商生产的设备提供该应用程序 我似乎找不到该怎么做 可能吗 附言。 我可以在android代码中检索设备制造商。 因此,我怀疑market应用程序也应该能够根据设备制造商进行过滤。 我只是不知道它是否真的有用(如果有用那就太好了)。好吧,你可以用合乎逻辑的方式来做 首先使用getResources().getConfiguration()查看硬件

我正在为特定品牌的手机开发一款android应用程序——这是项目要求,不是我的决定

因此,我需要能够在android marketplace中仅向特定制造商生产的设备提供该应用程序

我似乎找不到该怎么做

可能吗

附言。 我可以在android代码中检索设备制造商。 因此,我怀疑market应用程序也应该能够根据设备制造商进行过滤。
我只是不知道它是否真的有用(如果有用那就太好了)。

好吧,你可以用合乎逻辑的方式来做


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

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

您不需要根据应用程序代码中的设备/制造商筛选应用程序,而是可以在android market developer控制台中进行筛选-就在您发布应用程序时

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

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

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

有关更多信息,请参阅帮助页面,其中说明:

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

了解哪些设备可以在Android Market中找到您的应用程序

  • Device Availability(设备可用性)提供了基于 您的清单设置。例如,如果您的apk清单指定 如果屏幕较大,控制台将反映支持的设备 可以在市场上找到你的应用程序

  • 您还可以使用动态搜索 功能查看应用程序将不可用的设备 到您可以按制造商搜索设计名称(例如“激情”), 或实际的公共设备名称(例如“Nexus One”),以查看您的 清单设置已筛选设备。过滤问题或 不兼容设备此功能提供特定于设备的 开发人员的管理选项。将设备添加到 “手动排除的设备”列表中,您的应用程序将不可用于 那个设备在市场上被排除在外。这主要是为了提供帮助 开发人员通过提供帮助,尽可能提供最佳的用户体验 开发人员过滤掉已知存在兼容性问题的设备

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

    …取而代之的是,我使用Firebug的inspector工具获取这些滑块对象的类名(不记得它现在是什么-两个随机大写首字母缩写),然后在Javascript控制台中执行一个表达式,该表达式切换每个滑块的状态。比如:

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

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

    以下是Desty answer的改进:

    • 类名的自动检测
    • 真的不勾选:即使您已经有一些未勾选的框也可以工作
    代码:

    var className=document.evaluate('string(//li[@data device id]/checkbox/@class'),document,null,XPathResult.string\u TYPE,null)。stringValue;
    开关=document.getElementsByClassName(className);
    对于(变量i=0;i

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

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

    您必须找到所选品牌的
    ,编辑并添加
    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(); } }
    
    var nodes=document.getElementById(“sarasa”);对于(var i=0;i
    我已经用与本页答案不同的部分编写了一个小脚本(感谢@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');
    
    console.time(“执行时间”);
    var manufacturers=document.querySelectorAll(“[data manufacturer group]”);
    对于(变量i=0;i对于(var j=0;j随着Google Play控制台设计的发展,我没有成功地完成之前的工作。我注意到只有第一个复选框状态被修改。似乎每次单击都会发送到Google服务器。经过一些尝试,我发现添加一个节拍允许循环复选框。
    这是我使用的Javascript。只需在浏览器的控制台中复制粘贴(使用CHROME和FIREFOX进行测试)。请注意,您必须替换“下一页”i
    
    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');
    
    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();
    
    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();