Подтвердить что ты не робот

Как ограничить приложение Android конкретным устройством?

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

Поэтому мне нужно иметь возможность сделать приложение доступным на рынке Android только для тех устройств, которые производятся этим производителем SPECIFIC.

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

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

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

4b9b3361

Ответ 1

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

  • Доступность устройств обеспечивает динамический список совместимых устройств на основе ваши настройки манифеста. Например, если ваш apks manifest указывает большой размер экрана, консоль будет отображать поддерживаемые устройства который может найти ваше приложение в Market.

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

Ответ 2

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

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

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

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

Ответ 3

Ниже приведено улучшение ответа 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();
}

Этот script занимает около 1 минуты для выполнения. Запустите его из браузера Javascript Console.

Ответ 4

Хорошо, вы можете сделать это логично.

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

Ответ 5

Я написал script для отключения устройств по брендам на основе script от KrisWebDev.

Вам нужно найти <ol> выбранного вами бренда, отредактировать и добавить id="sarasa" к нему, а затем запустить этот script, чтобы отключить все:

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(); } }

Ответ 6

Я написал немного script, используя другую часть из ответов на этой странице (спасибо @Desty и @MichaelDePhillips). script быстрый (от 100 до 200 мс на моем компьютере), и вы можете указать, что бренд не переключается. Вот script:

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, все отзывы приветствуются.

Ответ 7

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

Ответ 8

По мере развития дизайна консоли Google Play мне не удалось выполнить предыдущую работу. Я заметил, что было изменено только первое состояние флажка. Кажется, что каждый клик делает POST на сервер google. После некоторых попыток, я обнаружил, что добавление темпа позволяет зацикливать на флажках. Вот Javascript, который работает для меня. Просто скопируйте пасту в консоль вашего браузера (протестируйте с помощью CHROME и FIREFOX). Обратите внимание, что вам придется заменить "Следующая страница" в запросе "Выбор следующей кнопки", если ваш кредит не является английским.

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]: checked: enabled' with 'input [type = checkbox]: checked: disabled'

Ответ 9

Установите флажок/Снимите галочку на странице поддерживаемого устройства в консоли Google для воспроизведения, используйте ниже script.Это script отлично работает для последней игровой консоли Google. Просто скопируйте пасту в консоль вашего браузера (протестируйте с помощью 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();