1 votes

Comment démarrer une application à partir de la ligne de commande ?

Je veux démarrer une application avec le nom du paquet de.avm.android.fritzapp à partir d'une invite shell parce qu'il quitte de temps en temps. J'ai décompilé el .apk et a obtenu le AndroidManifest.xml .

J'ai lancé certains écrans de l'application par :
am start -a android.intent.action.MAIN-n de.avm.android.fritzapp/.gui.SettingsTestActivity

Mais ce n'est pas la même chose que de cliquer sur l'icône de l'application à partir de l'écran d'accueil. Au démarrage normal, l'application s'enregistre auprès du routeur pour recevoir les appels IP, etc.

Comment puis-je simplement démarrer l'application comme si on avait cliqué dessus ?

1voto

Manubhargav Points 3100

TL:DR ;
adb shell monkey -p de.avm.android.fritzapp 1


Réponse longue

Comment puis-je démarrer l'application comme si j'avais cliqué dessus ?

Vous pouvez démarrer le activité principale de l'application
am start -n com.package.name/.MainActivityName

Puisque vous avez décompilé l'application et obtenu le fichier fichier manifeste afin d'obtenir le nom du activité principale . Vous pouvez obtenir ces informations à partir de la page d'accueil de l'application. AndroidManifest.xml en recherchant le activité con intent-filter et contient également android.intent.action.MAIN en cours d'action

Vérifier le activité dont le squelette est le suivant

<activity android:name="this.is.main.activity.name you.are.looking.for">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

Vous pouvez démarrer cette application particulière en am start -n app de.avm.android.fritzapp/.gui.FRITZApp


Si vous n'avez pas le code source ( fichier manifeste ), vous pouvez essayer la méthode plus générale qui consiste à connaître la valeur du nom du paquet est suffisante avec l'aide de Outil de singe comme ci-dessous :

adb shell monkey -p package.name 1 (Simplifié)

La commande ci-dessus fonctionne parce que Singe prend une contrainte -c <main-category> qui, si elle n'est pas spécifiée, sélectionnera les activités répertoriées dans la catégorie Intent.CATEGORY_LAUNCHER qui devient à son tour

adb shell monkey -p package.name -c android.intent.category.LAUNCHER 1

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