2013-08-29 15 views
6

Ho una domanda sull'utilizzo di ADB.Come ottenere gli extra dell'attività attualmente in esecuzione tramite ADB

So che questo comando:

adb shell dumpsys activity 

mi può mostrare tutte le attività attualmente in esecuzione sul dispositivo.

Ma mi accorgo che a volte, gli intenti appaiono come questo:

Intent { ...some_intent/activity_name.... (has extras) } 

So che comparse fanno sì che l'attività è stata avviata con una sorta di parametri passati ad esso (potrei sbagliarmi qui, per favore correggimi se lo sono).

Quindi la mia domanda è: come posso ottenere gli extra dell'intenzione/attività tramite ADB?

La ragione per cui ho bisogno di questo è perché sto cercando di lanciare un apk (che viene installato sul telefono) tramite il comando ADB, qualcosa di simile:

adb shell "su -c 'am start -n com.package.name/.ActivityName'" 

che funziona e aprire l'applicazione. L'applicazione ha una schermata iniziale (diciamo che la chiamiamo HomeActivity) e devi fare clic su un pulsante e fare alcune selezioni (ad esempio SelectionActivity) e andrà su un'altra schermata (ad esempio ActionActivity). Voglio essere in grado di lanciare l'apk e farlo andare direttamente ad ActionActivity.

L'applicazione si arresta in modo anomalo se si tenta di avviare ActionActivity con il comando am start, presumo che ciò sia dovuto alla necessità di parametri dalla schermata SelectionActivity.

È per questo che sto cercando di vedere quali sono gli "extra" o parametri che lo schermo ActionActivity ottiene in realtà, in modo che io possa fare qualcosa di simile:

adb shell "su -c 'am start -n com.package.name/.ActionActivity -e param1 val1 -e param2 val2'" 

spero che la mia domanda è chiara.

Per favore correggimi se sto facendo un errore da qualche parte.

Grazie in anticipo!

+0

Vedi se questo ha lps: [Come posso inviare parametri a una funzione di test, che è stata lanciata usando il comando adb shell am Instrumentation] (http://stackoverflow.com/a/3229077/2558882). – Vikram

+0

Come fai a sapere che mancano solo gli extra? La prima attività potrebbe fare qualcos'altro. A proposito, di solito non hai bisogno di 'su' per eseguire' am'. –

+0

Hai mai trovato una risposta a questo?Sto provando a fare esattamente la stessa cosa. –

risposta

2

Se riesco a capire correttamente, il tuo obiettivo è avviare l'attività "azione" con l'intento corretto ma non sai quale tipo di informazioni sui parametri devono essere incluse, giusto?

Il comando dumpsys non scaricare tutto ciò che si desidera, in modo semplicemente raggiungere il tuo obiettivo, si hanno 2 opzioni (si dovrebbe trovare un dispositivo che è possibile masterizzare il proprio firmware in esso):

  1. modificare il metodo di discarica in AMS per visualizzare maggiori informazioni

  2. modificare il codice sorgente della classe ActivityThread per stampare le informazioni dettagliate intento

+0

Hi Robin, Grazie per la risposta. Purtroppo, non posso modificare il codice sorgente della classe ActivityThread in quanto l'apk non è mio, quindi non c'è modo di modificare il codice sorgente per inserire qualcosa. – JJackJi

+0

Hi Robin, Grazie per la risposta. Sfortunatamente, non posso modificare il codice sorgente della classe ActivityThread in quanto l'apk non è mio, quindi non c'è modo di modificare il codice sorgente per stampare qualcosa in più. Per quanto riguarda la modifica del metodo dumpsys, temo che non sia un'opzione per me. Il mio progetto richiede che io usi il firmware che attualmente risiede sul telefono. Non ci sono comandi android adb incorporati per raggiungere questo obiettivo? Grazie! – JJackJi

+0

Voglio dire, vuoi solo ottenere le informazioni. Quindi puoi usare un firmware personalizzato per ottenere le informazioni che desideri. Con un firmware personalizzato è possibile modificare dumpsys o codice sorgente del thread di attività. Sono entrambi i codici sorgente del framework. Questo è solo un approccio per raggiungere il tuo obiettivo. – Robin

Problemi correlati