3 votes

Comment être informé des applications supprimées de Google Play Store ?

Récemment, j'ai découvert que certaines applications (que j'avais déjà installées) ont été supprimées du Google Play Store pour différentes raisons selon Google.

Existe-t-il un moyen d'être informé des applications supprimées du Play Store, comme une application permettant de vérifier les applications actuellement installées, une newsletter/feed (spéciale) pour cela ou tout autre moyen ?

11voto

Firelord Points 23064

La réponse entière repose sur le fait que lorsque cette question est posée :

https://play.google.com/store/apps/details?id=PKG_NAME    # PKG_NAME is the package name of an app 

entre autres, le code HTTP dans les en-têtes retournés dans la plupart des cas serait soit :

  • 404 (ressource non trouvée) - application non disponible
  • 200 (succès) - application disponible
  • 403 (interdit) - l'application n'est pas disponible dans votre région ou vous n'êtes pas autorisé à accéder à la ressource.

J'ai utilisé ces informations dans les deux solutions proposées ici.

Automatisation

J'ai trouvé Tasker ( guide de l'utilisateur ) aptes ainsi que flexibles pour le travail. Les détails sur le déclencheur, c'est-à-dire le profil, suivront plus tard. Pour l'instant, suivez ces instructions pour le noyau.

Créez une tâche nommée App Status et créez les actions suivantes dans celle-ci :

  1. Code→ Exécuter le shell

    • Commandement : pm list packages -3 -i | grep -e "com.android.vending" -e "com.google.android.feedback"
    • Store Output In : %Pkgs
    • sélectionnez Continuer la tâche après l'erreur

    Cela va stocker la liste de tous les noms de paquets des applications installées depuis le Play Store, dans la variable Pkgs. Supprimer

    -i | grep -e "com.android.vending" -e "com.google.android.feedback"

    de Commande si vous ne voulez pas limiter la tâche aux applications installées uniquement depuis le Play Store.

  2. Variables → Ensemble de variables

    • Nom : %ret
    • Pour : appuyer une fois sur la touche Entrée de votre clavier

    J'ai appris cette étape dans le post aquí par plepleus. Cette étape est nécessaire parce que nous avons l'intention de copier chaque ligne (a un nom de paquet d'une application) de Pkgs dans une variable séparée. C'est pour faciliter l'utilisation.

  3. Variables → Fractionnement des variables

    • Nom : %Pkgs
    • Séparateur : %ret

    Cette étape divise les Pkgs, crée un tableau de Pkgs et chaque ligne est assignée à un index de ce tableau. Ainsi, la taille du tableau est le nombre de lignes de Pkgs.

  4. Variables → Ensemble de variables

    • Nom : %Count
    • A : %Pkgs(#)

    Nous créons une variable nommée Count et lui assignons la longueur du tableau Pkgs, dans le but de boucler.

  5. Variables → Ensemble de variables

    • Nom : %Tmp
    • A : %Pkgs(%Count)

    Maintenant que nous sommes dans une boucle, nous stockons la valeur assignée à l'index d'un Pkgs dans une nouvelle variable appelée Tmp. Cette étape est nécessaire car Tasker a des fonctionnalités limitées lorsqu'il s'agit de traiter des noms de variables complexes.

  6. Variables → Fractionnement des variables

    • Nom : %Tmp

    Cette étape divise la ligne au niveau des espaces et stocke les champs précédents et suivants dans Tmp1 et Tmp2. Tmp1 contient entre autres le nom du paquet.

  7. Variables → Fractionnement des variables

    • Nom : %Tmp1
    • Séparateur : :

    Cette étape extrait finalement le nom du paquet de Tmp1 et le stocke dans Tmp12. Notez que si Tmp n'avait pas été déclaré dans l'action 5, nous aurions été obligés de diviser %Pkgs(%Count)1 qui est un nom de variable invalide pour Tasker.

  8. Net → HTTP Get

    • Serveur : Port : https://play.google.com/store/apps/details?id=%Tmp12
    • Mime Type : text/html
    • sélectionnez Continuer la tâche après l'erreur

    Cette étape interroge le statut de l'application dans le Play Store et enregistre automatiquement le code HTTP renvoyé dans HTTPR.

  9. App → Test App

    • Type : Nom de l'application
    • Données : %Tmp12
    • Stocker le résultat dans : %Label
    • sélectionnez Continuer la tâche après l'erreur

    Cette étape trouve l'étiquette de l'application à partir du nom de son paquet et la stocke dans Label.

  10. Variables → Soustraction de variables

    • Nom : %Count
    • Valeur : 1

    Cette étape décrémente la variable Count afin que nous puissions passer au cycle suivant de la boucle.

  11. Tâche → Goto

    • Type : Numéro d'action
    • Numéro : 5
    • Si : %Count != 0

    Cette étape met finalement en œuvre la boucle. Lorsque cette action est exécutée, elle vérifie si Count est égal à 0 ou non. Nous avons supposé que toutes les lignes de Pkgs avaient un nom de paquetage, il est donc logique que la boucle s'exécute jusqu'à ce que Count devienne zéro, auquel cas, il suffit de sortir.

C'est à vous de décider comment vous souhaitez être informé. Peu importe ce que vous avez l'intention de faire pour vous informer du statut d'une application dans le Play Store, ne le faire qu'entre les actions 9 et 10. Par exemple, vous pouvez configurer la tâche App Status pour afficher une notification lorsqu'une application n'est pas trouvée dans le Play Store. Vous pouvez ajouter l'action : Alerte → Notifier :

  • Titre : Play Store : App non disponible
  • Texte : %Label
  • Priorité : 5
  • Si : %HTTPR eq 404

Vous pouvez utiliser AutoNotifications pour contourner la fonctionnalité limitée du Tasker en matière de création de notifications.

Étant donné qu'un redémarrage entraîne la perte de toutes les notifications reçues, vous pouvez écrire le résultat final de la tâche dans un fichier. Utilisez l'action Fichier → Écrire un fichier et utilisez-la en mode ajout. C'est juste un conseil selon le commentaire d'Izzy sur la question. Je ne serai pas en mesure d'offrir une aide quelconque à cet égard.

Quant au profil, choisissez le nombre de déclencheurs que vous voulez. Je recommande un déclencheur basé sur l'heure, mais vous pouvez aussi choisir de créer un raccourci sur l'écran d'accueil.

C'est tout pour l'automatisation ici.

Ligne de commande

Je ne pouvais pas ignorer la ligne de commande qui rend l'objectif si facile à atteindre dans ce cas particulier.

Dépendances

  • Nécessite busybox binaire. Si vous ne l'avez pas installé, reportez-vous à : Comment installer les outils de ligne de commande manquants sur un appareil Android ?
  • Nécessite aapt binaire. Si vous utilisez une ROM CM ou une ROM dérivée, ignorez cette exigence. Sinon, pour Android 4.x, vous pouvez envisager de télécharger le binaire à partir de aquí . Pour l'installer sur votre appareil, suivez l'approche Root ou non-Root mentionnée. aquí de manière appropriée.

    Utilisateurs d'Android 5.x : demandez de l'aide à Google.

Mon petit script

#!/system/bin/sh
# Check if the busybox binary exists under /data/local/tmp/ or /system/xbin. 
# Set the detected binary's path into the variable busybox or exit if file 
# doesn't exist or executable permission is not set
if \[\[ -x /data/local/tmp/busybox \]\]; then 
    busybox=/data/local/tmp/busybox;
elif \[\[ -x /system/xbin/busybox \]\]; then 
     busybox=/system/xbin/busybox;
else 
     date +'busybox binary not found or executable permission is not set. Exiting';
     exit;
fi

# Check if the aapt binary exists under /data/local/tmp or /system/bin or /system/xbin. 
# Set the detected binary's path into the variable aapt or exit if file
# doesn't exist or executable permission is not set
if \[\[ -x /data/local/tmp/aapt \]\]; then 
    aapt=/data/local/tmp/aapt;
elif \[\[ -x /system/bin/aapt \]\]; then
    aapt=/system/bin/aapt;
elif \[\[ -x /system/xbin/aapt \]\]; then
     aapt=/system/xbin/aapt;
else  
     date +'aapt binary not found or executable permission is not set. Exiting';
     exit;
fi

# List packages which were installed from Play Store  and store the package names under /sdcard/acc\_assoc\_packages.txt. 
# Remove -i | grep -e "com.android.vending" -e "com.google.android.feedback" if you don't want to restrict the script to apps installed only from Play Store.
pm list packages -3 -i | grep -e "com.android.vending" -e "com.google.android.feedback" | $busybox sed 's/package://g'| $busybox awk '{print$1}' > /sdcard/acc\_assoc\_packages.txt
$busybox printf "List of installed apps not available in Play Store:\\n\\n" > /sdcard/rm\_packages.txt;     # rm\_packages.txt would show the list of apps not available in Play Store

# For each package name in acc\_assoc\_packages.txt, find whether the package is available in Play Store. 
# If not, the HTTP return code would be 404 in curl's output. Use it for any processing you want.
while read line; do
    ID="https://play.google.com/store/apps/details?id=";           
    ret\_http\_code=$(curl -skI $ID$line | awk 'FNR==1{print $2}');   # -s is for silent mode, -k is use ignore certificates for SSL connection, -I is to show only header information
    path=$(pm path $line | $busybox sed 's/^package://g');          # get location of APK of package. Required for finding app's label
    label=$($aapt d badging $path 2>&1 | $busybox sed -ne '/application: label=/p' | $busybox cut -d "'" -f2);   # Get app label using $path

    # If returned HTTP code is 404, write into rm\_pacakges.txt the corresponding app label, package name and print to standard output. 
    # Else simply print to standard output.
    case $ret\_http\_code in
        404)
            $busybox printf "Status: Not Available - $label ($line)\\n"; 
            $busybox printf "$label ($line)\\n" >> /sdcard/rm\_packages.txt;  
            ;;
        403)
            $busybox printf "Status: Not authorized to access resource - $label ($line)\\n";
            ;;
        200)
            $busybox printf "Status: Available - $label ($line)\\n";
            ;;
        \*)
            $busybox printf "An unknown error occurred. Are we online?\\n";
            exit;   
    esac  
done < /sdcard/acc\_assoc\_packages.txt

Enregistrez le script sous /sdcard dans un fichier nommé app_status.sh et exécuter ce fichier depuis un émulateur de terminal de cette manière :

sh /sdcard/app_status.sh

Sortie démo :

(Cliquez sur l'image pour l'agrandir)

IMG:

Raccourci

Si vous avez busybox y aapt binaire installé et fonctionnant dans l'appareil, vous pouvez réduire considérablement les étapes nécessaires à la tâche App Status.

Enregistrez le script suivant dans un fichier nommé app_status.sh sous /sdcard .

#!/system/bin/sh
pm list packages -3 -i | grep -e "com.android.vending" -e "com.google.android.feedback" | $busybox sed 's/package://g'| $busybox awk '{print$1}' > /sdcard/acc\_assoc\_packages.txt
$busybox printf "List of installed apps not available in Play Store:\\n\\n" > /sdcard/rm\_packages.txt;     

while read line; do
    ID="https://play.google.com/store/apps/details?id=";           
    ret\_http\_code=$(curl -skI $ID$line | awk 'FNR==1{print $2}');
    path=$(pm path $line | $busybox sed 's/^package://g');       
    label=$($aapt d badging $path 2>&1 | $busybox sed -ne '/application: label=/p' | $busybox cut -d "'" -f2);

      case $ret\_http\_code in
        404)
            $busybox printf "Status: Not Available - $label ($line)\\n"; 
            $busybox printf "$label ($line)\\n" >> /sdcard/rm\_packages.txt;  
            ;;
        403|200)
            # Intentionally left blank
            ;;
        \*)
            $busybox printf "An unknown error occurred. We'll be victorious next time.\\n" >> /sdcard/rm\_packages.txt;
            exit;   
    esac
done < /sdcard/acc\_assoc\_packages.txt

Maintenant, supprimez toutes les actions que vous avez dans la tâche et configurez les suivantes :

  1. Code → Exécuter le shell

    • Commandement : sh /sdcard/app_status.sh
    • Store Output In : %Pkgs
    • sélectionnez Continuer la tâche après l'erreur

    Cette étape va écrire dans le fichier rm_packages.txt les entrées comme les applications non disponibles dans le Play Store. Il s'agit de l'action principale. Les actions suivantes sont facultatives et servent uniquement à vous avertir.

  2. Tâche → Si : %Pkgs Set

  3. Alerte → Notification

    • Titre : Vérifier l'état des applications
    • Icône : facultatif
    • Priorité : 5
    • Actions : Action → App → Lancer l'app → sélectionnez une app d'édition de texte telle que . QuickEdit → Données : file:///sdcard/rm_packages.txt

Exemple de notification :

IMG:

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X