PDA

Виж пълна версия : Стартиране на Service на друга апликация :)



martinmarinov
07.06.10., 21:45
Някой да ми каже как мога да стартирам Service на апликация, която аз не съм писал и да получа инфо от него. Знам му името от Manifest файла на даденото apk. Ще цитирам :)


<service android:name="FMRadioService" android:exported="true">
<intent-filter>
<action android:name="com.htc.fm.IFMRadioService" />
</intent-filter>
</service>

Та става дума за радиото на Desire. С baksmali съм декомпилирал и класовете и въпреки че този "език" е почти неразбираем, в случай че трябва да възстановя някой интерфейс, мисля че ще мога да се справя... Някой може ли да помогне :)

EDIT: Май намерих решение, наречено AIDL :)

appforce
07.06.10., 23:12
Ако нямаш самият .aidl файл от сорса на приложението, как ще взаимодействаш със сървиса му? Лесно ще се закачиш към сървиса със bindService() и ще получиш ServiceConnection със един гол IBinder. Ако нямаш .aidl файла или поне генерирания .java няма да можеш да използваш методите на сървиса. Крайно болезнен вариант е от деасемблирания байт код от backsmali да скалъпиш някакви транзакции на ниско ниво, но мотивацията ти трябва да е бетонна :)

едит: увлякох се :o) , не видях че искаш само да го стартираш. В такъв случай пишеш startService(new Intent("com.htc.fm.IFMRadioService"));

martinmarinov
07.06.10., 23:57
Най-накрая успях да го стартирам и да го байндна. С baksmali съм го декомпилирал и мисля, че скалъпих .aidl файла, защото връща някакви стойности, но сега ще лягам да спя, а утре ще мисля как ще го довършвам :D

PS:
Ааа и btw ако някой му дотрябват декомпилираните файлове, не е нужно да минава през ада за тях :D
HTCRadio.rar (18.7 MB) (http://martinmarinov.info/HTCRadio.rar)
тук съм ги качил в случай че някой има интерес