2013-07-18 8 views
8

Sto tentando di inviare l'intento BATTERY_CHANGED attraverso la shell ADB. Finora sono riuscito solo per inviare l'intento senza informazioni:Come trasmettere l'intento con gli extra tramite la shell ADB?

am broadcast -a android.intent.action.BATTERY_CHANGED 

ho creato una strega app in ascolto per questo intento e qui è quello che il sistema invia ogni pochi secondi:

#Intent;action=android.intent.action.BATTERY_CHANGED;launchFlags=0x60000010;i.icon-small=17302838;B.present=true;i.scale=100;i.level=100;S.technology=Li-ion;i.status=5;i.voltage=4155;i.invalid_charger=0;i.plugged=2;i.health=2;i.temperature=280;end 

Quando mi trasmetto l'intento mio app mostra questo:

#Intent;action=android.intent.action.BATTERY_CHANGED;launchFlags=0x10;end 

la mia domanda è come posso trasmettere l'intento attraverso il adb shell con alcune di queste proprietà/bandiere (come la scala, lo stato, la spina ged, ecc.)?

risposta

10

Il formato parametro <INTENT> è lo stesso per tutti am sottocomandi come start, startservice e broadcast.

Potrebbe essere passato come una combinazione di parametri separati come -a <ACTION>, -c <CATEGORY>, -n <COMPONENT> e diverso -e <EXTRA> per i diversi tipi di comparse o come una singola stringa formattata URI:

am broadcast "intent:#Intent;action=android.intent.action.BATTERY_CHANGED;i.status=5;i.voltage=4155;i.level=100;end" 
+7

Grazie per la risposta. Funziona perfettamente. Nel frattempo ho trovato un'altra possibile soluzione: 'trasmetto -a android.intent.action.BATTERY_CHANGED --ez present false --ei state 2 --ei level 50' – Valyo

+1

La risposta che lei non ha funzionato per me, ma Valyo's il commento qui ha funzionato. Inoltre, è necessario essere in adb shell per questo, quindi se sei su e-mail la commadnline, basta anteporre 'adb shell' al comando qui. –

+0

@Valyo commento ha aiutato ma ho dovuto cambiare gli extra per trasmettere broadcast -a android.intent.action.BATTERY_CHANGED --ez present false --ei state 2 --ei livello 50 – PSIXO