Mam taki problem. Jest sobie inna aplikacja. Nie ja ją pisałem i nie mam jej kodu źródłowego. Czy mogę z poziomu mojej aplikacji uruchomić tamtą a następnie nią sterować to znaczy wykonać kilka kliknięć na ekranie, przeczytać dane z ekranu wyświetlone przez tamtą aplikację i zamknąć ją, Jednocześnie chcę, żeby na ekranie nie był widoczna tamta aplikacja bo chcę to robić z uruchomionej przeze mnie usługi. Dobrze by było żebym czytając wyniki wyświetlone z tamtej aplikacji (same cyfry) nie musiał stosować żadnego OCRa tylko jakoś „przechwycił” jej wyjście.
Obawiam się, że jedyną możliwością jest wywołanie jakiegoś komponentu aplikacji (Aktywności, usługi, itp) za pomocą odpowiedniej intencji. Aby móc oddziaływać na inne obiekty musiałbyś mieć dostarczony jakiś interfejs lub dostęp do definicji klas tej aplikacji. A jedyne do czego masz dostęp to plik AndroidManifest.xml, który jest czymś w rodzaju zewnętrznego API każdej aplikacji.
No ale skoro aplikacje typu VNC server potrafią takie rzeczy to jest to wykonalne. Może rozbiję moje pytanie na następujące:
1. Czy jest funkcja uruchamiająca zadaną aktywność ?
2. Czy jest funkcja symulująca naciśnięcie przycisku lub kliknięcie w odpowiedni punkt ekranu lub przycisk
3. Czy jest funkcja przechwytująca ekran uruchomionej aktywności tak żebym mógł przeczytać jej wyniki ?
Zakładam, że na potrzeby tego zagadnienia mógłbym uruchamiać program z prawami roota.
Jeśli chcesz załączyć kod źródłowy przejdź do edytora HTML (ostatni przycisk – Show source) i swój kod umieść wewnątrz znaczników <pre class=”brush: język”></pre> (np. <pre class=”brush: java”>System.out.println(„Lorem ipsum”)</pre> ).
Listę dostępnych języków znajdziesz na tej stronie.
Tylko zarejestrowani użytkownicy mogą odpowiadać na pytania.
zaloguj się lub skorzystaj ze swojego profilu:
Student Informatyki Stosowanej na Uniwersytecie Jagiellońskim. Z zamiłowania Android developer, z doświadczenia programista webowy i producent muzyczny (Dreamlab Onet.pl, RMF FM, eLO RMF) . Uzależniony od podróży, dobrej kawy, i gier wideo. Pracoholik (tak mówią) i gadżetomaniak (tak sądzi).
Zaloguj się lub skorzystaj ze swojego profilu
Odpowiedzi: 9
Odpowiedzi: 5
Odpowiedzi: 4
Odpowiedzi: 3
Odpowiedzi: 2
Komentarzy: 9
Komentarzy: 4
Komentarzy: 4
Komentarzy: 3
Komentarzy: 2
© 2012 android4devs.pl
created by froger_mcs
Sterowanie inną aplikacją
3 Odpowiedzi
Twoja odpowiedź
O autorze
Ostatnie oferty pracy
Najpopularniejsze pytania
Popularne artykuły
Kategorie
Archiwum
Tagi
O autorze
- Programista Android
Opublikowano 27.08.2011, Miejsce pracy: Białystok
- Stoper
- Widget i przechowywanie danych
- Sprawdzenie stanu połączenia
- Sterowanie inną aplikacją
- Problem z emulatorem
- AsyncTask – asynchroniczne wykonywanie czasochłonnych zadań
- Activity – podstawowe informacje, cykl życia
- Content Providers – dostęp do danych przy pomocy dostawców treści
- Wykorzystanie Map Google w naszej aplikacji
- Podstawowe elementy UI – Button, EditText, TextView, Toast, LinearLayout
- Biblioteki zewnętrzne
- Geolokalizacja
- Kompatybilność
- Narzędzia
- Pierwsze kroki
- Podstawowe komponenty
- Przechowywanie danych
- Środowisko pracy
- UI
- Wielowątkowość
- Listopad 2011 (1)
- Sierpień 2011 (21)
- Lipiec 2011 (17)
- Uruchomić można tylko te Aktywności, które zostały do tego zaprojektowane. Nie ma problemu z uruchomieniem głównej Aktywności każdej aplikacji, nie ma też problemu z uruchomieniem Aktywności, które posiadają jakiekolwiek filtry Intencji, które je uruchamiają. Jednak w związku z tym, że każda aplikacja jest „zamknięta” we własnym procesie – nie ma możliwości aby uruchomić te Aktywności, do których nie ma bezpośredniego dostępu (zdefiniowanego w pliku AndroidManifest.xml).
- Na pewno istnieją metody symulujące nacisnięcie przycisku, wywoływane na konkretnym obiekcie widoku, chociaż domyślam się, że nie o to Ci chodzi. Dotykanie wyświetlacza można również symulować dzięki klasie TouchUtils, która wykorzystywana jest przy testowaniu aplikacji. Możesz też skorzystać z API monkeyrunner, za pomocą którego możesz kontrolować aplikację z poziomu kodu źródłowego.
- Jeżeli chodzi o przejęcie kontroli nad Aktywnością to nie wydaje mi się. Jeżeli chodzi o zrobienie zrzutu ekranu, to można skorzystać choćby z tej biblioteki – http://code.google.com/p/android-screenshot-library/, która pozwala nam robić zrzuty ekranu z poziomu kodu źródłowego.
|
|
Mirosław StanekMirosław StanekSterowanie inną aplikacjąlinklzurMirosław StaneklinklzurlinkMirosław StaneklinkActivityAlertDialogAndroidManifestAppWidgetAVDBindingBroadcastReceiverButtonDialogEditTextFiltry IntencjiGeolokalizacjaGoogle MapsGPSIDEIntentIntentFiltersksoap2ListViewMapViewMapyNinePatchNotificationPendingIntentPowiadomieniaPraca w tlePreferenceActivityProgressDialogprzechowywanie danychRotacjaSDKServicesSharedPreferencesSMSSOAPSQLiteTextViewTitlebarToastUIUstawieniaUsługiViewHolderWebViewWidget
0zadane 15 sierpnia 2011000