Как ограничить приложение Android для конкретного устройства? - PullRequest
25 голосов
/ 01 марта 2012

Я занимаюсь разработкой приложения для Android для телефонов марки SPECIFIC - это требование проекта, а не мое решение.

Так что мне нужно, чтобы приложение было доступно на рынке Android только для тех устройств, которые выпущены этим ОСОБЕННЫМ производителем.

Кажется, я не могу найти, как это сделать.

Возможно ли это?

P.S. Я могу получить марку устройства в коде Android. Поэтому я подозреваю, что рыночное приложение должно иметь возможность фильтровать по марке устройства. Я просто не знаю, так ли это на самом деле (было бы здорово, если бы это было так).

Ответы [ 9 ]

31 голосов
/ 01 марта 2012

Вам не нужно фильтровать ваше приложение на основе устройства / производителя в коде приложения, вместо этого вы можете сделать это с консоли разработчика Android Market - 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

Для получения дополнительной информации см. Справочную страницу Доступность устройства , которая гласит:

Диалог доступности устройства может помочь разработчикам в двух способы:

Узнайте, какие устройства могут найти ваше приложение в Android Market

  1. Доступность устройства предоставляет динамический список совместимых устройств на основе ваши настройки манифеста. Например, если манифест вашего apk указывает большой размер экрана, консоль будет отображать поддерживаемые устройства который может найти ваше приложение в Маркете.

  2. Вы также можете использовать динамический поиск функция, чтобы увидеть устройства, которые ваше приложение не будет доступно к. Вы можете выполнить поиск по производителю, названию дизайна (например, «Passion»), или фактическое имя общедоступного устройства (например, «Nexus One»), чтобы увидеть, если ваш манифест настроек отфильтровал устройство. Фильтр проблемный или несовместимые устройства Эта функция обеспечивает специфичное для устройства Вариант администрирования для разработчиков. Когда вы добавляете устройство к Список «Устройства, исключенные вручную», ваше приложение не будет доступно для что исключено устройство в маркете. Это в первую очередь призвано помочь разработчики обеспечивают наилучшее взаимодействие с пользователем, помогая разработчики отфильтровывают устройства, у которых есть проблемы с совместимостью.

29 голосов
/ 05 сентября 2013

В разделе Поддерживаемые устройства на странице консоли разработчика вы можете просмотреть список всех устройств. Это загружает более 2000 флажков ползункового типа, которые изначально включены. К сожалению, в интерфейсе нет опции «отключить / включить все» ...

... Вместо этого я использовал инструмент инспектора Firebug, чтобы получить имя класса для этих объектов ползунка (не могу вспомнить, что это было сейчас - две случайные прописные буквы), а затем выполнил выражение в консоли Javascript, которое переключало состояние каждый слайдер. Что-то вроде:

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

Это заморозило браузер на минуту или две, но после этого каждый телефон был помечен как неподдерживаемый. Затем вы можете включить телефон (ы), которые вам нужно поддерживать.

19 голосов
/ 31 января 2015

Ниже приведено усовершенствование ответа 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 Console.

2 голосов
/ 03 ноября 2016

Я написал небольшой сценарий, используя другую часть из ответов на этой странице (спасибо @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, все отзывы приветствуются.

2 голосов
/ 08 марта 2016

Я написал скрипт для отключения устройств по марке на основе скрипта от 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(); } }
2 голосов
/ 01 марта 2012

Ну, вы можете сделать это логичным способом.

Сначала детали оборудования, используя getResources().getConfiguration(). Теперь вы можете указать условие, если ваше оборудование имеет этот mdel или имя, и затем продолжить

0 голосов
/ 14 сентября 2017

Чтобы установить / снять все флажки на странице поддерживаемых устройств в консоли 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();
0 голосов
/ 15 июня 2017

По мере развития дизайна консоли Google Play мне не удалось выполнить предыдущую работу. Я заметил, что было изменено только первое состояние флажка. Кажется, что каждый клик делает POST на сервер Google. После некоторых попыток я обнаружил, что добавление темпа позволяет делать петли на флажках. Вот Javascript, который работает для меня. Просто скопируйте вставить в консоль вашего браузера (протестировано с CHROME и FIREFOX). Обратите внимание, что вам придется заменить «Следующая страница» в 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();

Если вы хотите установить все флажки, просто замените 'input [type = checkbox]: флажок: включен' на 'input [type = checkbox]: флажок: отключен'

0 голосов
/ 01 марта 2012

когда вы собираетесь загрузить приложение на рынок, на странице публикации у вас будет опция доступных устройств, где вы можете добавлять / удалять устройства.Таким образом, вы можете отфильтровать устройства по названию производителя и модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...