web-dev-qa-db-fra.com

Comment limiter l'application Android à une marque de périphérique spécifique?

Je suis en train de développer une application Android pour une marque de téléphones spécifique.

Je dois donc pouvoir mettre cette application à disposition sur le marché Android uniquement avec les appareils produits par ce fabricant SPÉCIFIQUE.

Je ne semble pas être capable de trouver comment faire cela.

C'est possible? 

P.S. Je peux récupérer la marque de l'appareil dans le code Android. Je suppose donc que l'application du marché devrait également pouvoir filtrer par la marque de l'appareil. Je ne sais tout simplement pas si c'est le cas (ce serait formidable si c'est le cas).

25
Nar Gar

Vous n'avez pas besoin de filtrer votre application en fonction du périphérique/du fabricant dans le code de l'application, mais vous pouvez le faire à partir de la console de développement Android Market - https://market.Android.com/publish/ juste au moment où vous le souhaitez. publier l'application elle-même.

Il existe une section «Périphériques pris en charge» sur la console du développeur, qui affiche une liste de tous les périphériques pouvant accéder au marché Android. Vous pouvez ensuite filtrer les appareils ou les fabricants non compatibles avec votre application.

Voici la section de la console principale du développeur:

This is the section in the main developer console

Ici, vous pouvez empêcher des appareils et/ou des fabricants de voir votre application.

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

Pour plus d'informations, consultez la page Disponibilité du périphérique help qui indique:

La boîte de dialogue Disponibilité du périphérique peut aider les développeurs de deux puissants façons:

Comprendre quels appareils peuvent trouver votre application sur Android Market 

  1. Device Availability fournit une liste dynamique de périphériques compatibles sur la base de vos paramètres de manifeste. Par exemple, si le manifeste de votre apk spécifie une grande taille d’écran, la console reflètera les périphériques pris en charge qui peut trouver votre application sur le marché. 

  2. Vous pouvez également utiliser la recherche dynamique fonctionnalité pour voir les périphériques que votre application ne sera pas disponible à. Vous pouvez rechercher par fabricant, le nom du design (par exemple, «Passion»), ou le nom de périphérique public réel (par exemple, "Nexus One"), pour voir si votre Les paramètres de manifeste filtraient un appareil. Filtre problématique ou Périphériques non compatibles Cette fonctionnalité fournit une spécifique à un périphérique. option d'administration pour les développeurs. Lorsque vous ajoutez un appareil au Dans la liste «Périphériques exclus», votre application ne sera pas disponible pour cet appareil exclu dans le marché. Ceci est principalement destiné à aider les développeurs fournissent la meilleure expérience utilisateur possible, en aidant les développeurs filtrent les périphériques connus pour avoir des problèmes de compatibilité.

31
Soham

Dans la section Périphériques pris en charge de la page de la console du développeur, vous pouvez afficher la liste de tous les périphériques. Cela charge plus de 2 000 cases à cocher de type curseur qui sont initialement définies sur activé. Malheureusement, il ne semble pas y avoir d'option "désactiver/activer tout" dans l'interface ...

... À la place, j'ai utilisé l'outil d'inspection de Firebug pour obtenir le nom de classe de ces objets de curseur (je ne me souviens plus de ce qu'il était maintenant - deux acronymes aléatoires en majuscules), puis j'ai exécuté une expression dans la console Javascript qui modifiait l'état de chaque curseur. Quelque chose comme:

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

Cela a gelé le navigateur pendant une minute ou deux, mais tous les téléphones ont ensuite été marqués comme non pris en charge. Ensuite, vous pouvez activer le ou les téléphones que vous devez prendre en charge.

29
Desty

Ci-dessous une amélioration de la réponse Desty avec:

  • Détection automatique du nom de classe
  • Vraiment décoché: fonctionne même si certaines cases sont déjà décochées

Code:

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

Ce script prend environ 1 minute pour être exécuté. Lancez-le à partir de la console Javascript de votre navigateur.

19
KrisWebDev

J'ai écrit un script pour désactiver les périphériques par marque basé sur le script de KrisWebDev.

Vous devez localiser le <ol> de la marque que vous avez choisie, modifier et ajouter id="sarasa", puis exécuter ce script pour tout désactiver:

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
Diego Belay

Eh bien, vous pouvez le faire de manière logique. 

Commencez par détailler le matériel à l’aide de getResources().getConfiguration(). Maintenant, vous pouvez donner la condition si votre matériel est de ce nom ou alors continuez.

2
Lucifer

J'ai écrit un petit script en utilisant des parties différentes des réponses sur cette page (merci @Desty et @MichaelDePhillips). Le script est rapide (entre 100 et 200 ms sur mon ordinateur) et vous pouvez indiquer à une marque de ne pas passer. Voici le 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');

Ceci est mon premier javascript, tous les retours sont les bienvenus.

2
RSchmitt

Au fur et à mesure de l'évolution de la conception de la console Google Play, je n'ai pas réussi à faire le travail précédent. Je remarque que seul le premier état de case à cocher a été modifié. Il semble que chaque clic crée un POST sur Google Server. Après quelques tentatives, j’ai trouvé que l’ajout d’un tempo permettait de boucler les cases à cocher . Voici le javascript qui me convient. Il suffit de copier coller dans la console de votre navigateur (testé avec CHROME et FIREFOX). Notez que vous devrez remplacer "Page suivante" dans le bouton querySelector of next page si votre prêt n’est pas anglais.

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

Si vous souhaitez cocher toutes les cases à cocher, remplacez simplement 'input [type = case à cocher]: coché: activé' avec 'input [type = case à cocher]: coché: désactivé'

0

Pour cocher/décocher toutes les cases dans la page du périphérique pris en charge dans la console Google Play, utilisez le script ci-dessous. Ce script fonctionne correctement pour la dernière console Google Play. Il suffit de copier coller dans la console de votre navigateur (testé avec CHROME et 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
Kannappan

lorsque vous allez télécharger une application sur le marché, sur la page de publication, vous aurez l'option de périphériques disponibles où vous pouvez ajouter/supprimer des périphériques. De cette manière, vous pouvez filtrer les périphériques par fabricant et par nom de modèle.

0
Maneesh