7
votes

Notifications Android via ADB

J'écris un script shell qui vous permet d'installer un fichier .apk sur tous les téléphones Android connectés à un ordinateur en parallèle en utilisant terminal . Dans mon entreprise, nous effectuons des tests sur de nombreux appareils et cela rend la partie d'installation plus rapidement.

question: Je recherche un moyen d'identifier rapidement quels téléphones ont eu le fichier .apk installé via une sorte de retour d'information / notification. Idéalement, vous devriez être capable de voir quels téléphones ont reçu le .apk simplement en le regardant (une sorte de flash de son ou d'écran) ou simplement en déverrouillant le périphérique (ex. L'application nouvellement installée a été ouverte).

Des idées de la façon dont je pouvais faire l'une de ces choses?

J'ai lu sur le lancement des applications, mais cela semble que ce n'est pas quelque chose que vous pourriez faire avec uniquement le .apk (vous auriez également besoin de spécifier une activité ...).

Des idées seraient très appréciées!

Merci!


0 commentaires

5 Réponses :


0
votes

Une façon dont je pouvais voir que cela est fait est une application qui vérifie l'installation des applications. Spécifiquement une liste de contrôle d'applications qui doit être installée sur l'appareil et que le packagemanager finit l'installation, il se met à jour basé sur cette diffusion.

En plus de le faire en dehors de la couche d'applications, je ne pense pas que ce n'est possible, sauf si vous reniflerez le port USB qui va à l'appareil et identifie les commandes et la charge utile et la page de charge (hack)


0 commentaires

1
votes

Vous pouvez utiliser le «ADB Shell Démarrer» avec des arguments dont vous aurez besoin pour rechercher votre package nouvellement installé.

S'il y a une préoccupation concernant ne pas être confondue par un escalier, adb désinstallez l'ancien avant Installation du nouveau, ou mieux encore, votre activité d'affichage de l'activité SPLASH. P>

Vous pouvez réellement utiliser AM Démarrer pour lancer une activité qui n'est pas connue du lanceur, vous pouvez donc l'utiliser pour le lancer directement vers une activité "à propos de" qui afficherait la version actuelle. Votre choix si vous faites cela disponible dans le cours normal de l'application, ou n'utilisez-le que ceci une fois comme une splash. P>

Vous devriez également pouvoir analyser la sortie de la commande d'installation adb - vous " Il faut voir s'il envoie des erreurs / succès à starr ou de stdout. p>

Mise à jour: strong> Voici comment faire une activité que vous pouvez utiliser pour activer l'écran et afficher un message , comme ceci: p> xxx pré>

Le code est fortement cracelé à partir du réalisateur intégré d'une version androïde précoce, il nécessitera: P>

package com.example.testreport;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.Gravity;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
public class ReportActivity extends Activity {
    PowerManager.WakeLock sScreenWakeLock;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         requestWindowFeature(android.view.Window.FEATURE_NO_TITLE);
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    }
    protected void onStart() {
        super.onStart();

        if (sScreenWakeLock == null) {
            PowerManager pm =
                    (PowerManager) getSystemService(Context.POWER_SERVICE);
            sScreenWakeLock = pm.newWakeLock(
                    PowerManager.FULL_WAKE_LOCK |
                    PowerManager.ACQUIRE_CAUSES_WAKEUP |
                    PowerManager.ON_AFTER_RELEASE, "ReportActivity Wakelock");
            sScreenWakeLock.acquire();
        }
        TextView tv=new TextView(this);
        tv.setTextSize(30);
        tv.setGravity(Gravity.CENTER);
        Intent i = getIntent();
        if ((i != null) && (i.hasExtra("result"))) 
            tv.setText(i.getStringExtra("result"));
        else 
            tv.setText("???");
        setContentView(tv);
    }
    protected void onStop() {
        if (sScreenWakeLock != null) {
            sScreenWakeLock.release();
            sScreenWakeLock = null;
        }
        super.onStop();
    }
}


4 commentaires

Merci pour les réponses! En fait, j'ai déjà eu la configuration pour associer des identifiants de périphérique avec chaque sortie d'échec / succès et le script imprime les périphériques qui ont échoué / terminé à la fin. Le problème est qu'il est difficile d'identifier certains appareils de leur identifiant. Si tous les acheteurs terminés émettent cela, cela faciliterait la tâche. Ou puis-je saisir des noms de périphérique réels à l'aide des identifiants? Merci encore! @dtmilano


Merci beaucoup pour votre aide! Malheureusement, je n'ai pas de contrôle sur le code qui entre dans les applications, mais c'est vraiment soigné! J'ai effectivement réussi à trouver une solution moi-même que je posterai ci-dessous si vous êtes intéressé. Merci encore!


Cela pourrait aller dans sa propre application, son juste un outil pour ADB à utiliser pour signaler des informations visuellement sur un périphérique. Qu'avez-vous trouvé?


J'ai dû attendre 8 heures avant d'avoir répondu mon propre poste: p. C'est ci-dessous maintenant. Merci encore!



3
votes

Utilisez le gestionnaire de paquets pour vérifier si l'APK est installé: xxx

par exemple xxx


0 commentaires

6
votes

a trouvé ma propre solution!

J'utilisais: p>

adb -s $deviceID shell am start -a android.intent.action.MAIN -n $packageName/$launchableActivity


0 commentaires

0
votes

Vous pouvez vérifier si le package est installé en exécutant xxx

qui retournerait package: votre nom-package-ici s'il est installé, donc vous pouviez Stockez la valeur de retour dans une variable, puis vérifiez si la variable est NULL ou «Package: votre nom-nom-nom-ici».

Pour ouvrir votre application installée sur l'appareil, même si vous ne le faites pas Avoir une activité spécifique à appeler, vous pouvez exécuter xxx


0 commentaires