2013-08-29 10 views
6

Mam pytanie dotyczące korzystania z ADB.Jak uzyskać dodatki z obecnie działającej działalności za pośrednictwem ADB

wiem, że ta komenda:

adb shell dumpsys activity 

może pokazać mi wszystkie czynności, które są aktualnie uruchomione na urządzeniu.

Ale widzę, że czasami, że intencje wyglądać następująco:

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

wiem, że dodatki oznaczać, że działalność została rozpoczęta z pewnego rodzaju parametrów przekazywanych do niego (może tu być źle, proszę popraw mnie, jeśli jestem).

Moje pytanie brzmi: jak mogę uzyskać dodatki o intencji/aktywności za pośrednictwem ADB?

Powodem muszę to dlatego próbuję uruchomić apk (który jest zainstalowany na telefonie) poprzez komendę ADB, coś jak:

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

który działa i otworzyć aplikację. Aplikacja ma ekran startowy (powiedzmy, że nazywamy go HomeActivity) i musisz kliknąć przycisk i dokonać pewnych wyborów (np. SelectionActivity) i przejdzie do innego ekranu (powiedzmy ActionActivity). Chciałbym móc uruchomić apk i skierować go bezpośrednio do ActionActivity.

Aplikacja ulegnie awarii, jeśli spróbuję uruchomić ActionActivity z poleceniem am start, zakładam, że jest tak, ponieważ wymaga parametrów z ekranu SelectionActivity.

Dlatego staram się zobaczyć, jakie są „Dodatki” lub parametry, że ekran ActionActivity rzeczywiście wystąpią, tak, że mogę zrobić coś takiego:

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

nadzieję, że moje pytanie jest jasne.

Proszę, popraw mnie, jeśli gdzieś popełniam błąd.

Z góry dziękuję!

+0

Zobacz, czy to on lps: [Jak mogę dostarczyć parametry do funkcji testowej uruchamianej przy użyciu polecenia adb shell am Instrumentation] (http://stackoverflow.com/a/3229077/2558882). – Vikram

+0

Skąd wiesz, że brakuje tylko dodatków? Pierwsze działanie może zrobić coś innego. BTW, zwykle nie potrzebujesz 'su' do uruchomienia' am'. –

+0

Czy kiedykolwiek wymyśliłeś odpowiedź na to pytanie?Próbuję zrobić dokładnie to samo. –

Odpowiedz

2

Jeśli dobrze rozumiem, twoim celem jest rozpoczęcie działania "działanie" z właściwą intencją, ale nie wiesz, jakie informacje o parametrach powinny być uwzględnione, prawda?

Komenda dumpsys nie zrzuci wszystko, co chcesz, by tak po prostu osiągnąć swój cel, masz 2 opcje (należy znaleźć jedno urządzenie, które można nagrać własny firmware do niego):

  1. zmodyfikować metodę zrzutu w AMS wydrukować więcej informacji

  2. modyfikować kod źródłowy klasy ActivityThread aby wydrukować szczegółowe informacje zamiarem

+0

Witaj Robin, Dzięki za odpowiedź. Niestety, nie mogę zmodyfikować kodu źródłowego klasy ActivityThread, ponieważ apk nie jest mój, więc nie ma możliwości zmodyfikowania kodu źródłowego, aby cokolwiek umieścić. – JJackJi

+0

Witam Robin, Dzięki za odpowiedź. Niestety, nie mogę zmodyfikować kodu źródłowego klasy ActivityThread, ponieważ apk nie jest mój, więc nie ma możliwości zmodyfikowania kodu źródłowego w celu wydrukowania czegokolwiek dodatkowego. Jeśli chodzi o modyfikowanie metody dumpsys, obawiam się, że nie jest to dla mnie opcja. Mój projekt wymaga korzystania z oprogramowania wbudowanego, które obecnie znajduje się w telefonie. Czy nie ma żadnych wbudowanych poleceń adb do systemu Android, aby to osiągnąć? Dzięki! – JJackJi

+0

Chodzi mi o to, że chcesz tylko uzyskać informacje. Aby uzyskać potrzebne informacje, możesz użyć spersonalizowanego oprogramowania układowego. Za pomocą spersonalizowanego oprogramowania można zmodyfikować kod źródłowy dumpsys lub wątek aktywności. Oba są źródłowymi kodami źródłowymi. To tylko podejście do osiągnięcia celu. – Robin

Powiązane problemy