2013-01-19 16 views
5

Możliwe jest utworzenie skrótu z ADB na launcherze mojego Androida? Mam plik .bat do zainstalowania moich aplikacji z mojego komputera (przez podwójne kliknięcie), ale po tym muszę zawsze szukać na ogromnej (nie tak przyjaznej dla użytkownika) liście aplikacji programu uruchamiającego. Gdyby było możliwe dodanie tej funkcji do mojego pliku .bat, byłoby wspaniale. Już próbuję wyszukiwać w Internecie bez żadnego szczęścia: S.Tworzenie skrótów w Androidzie przez ADB

Z góry dziękuję

+1

Jest stosunkowo dobrze udokumentowane 'com.android.launcher.action.INSTALL_SHORTCUT', że można wywołać poprzez' adb shell broadcast', ale jeden dodatków to zamiar uruchomienia. Jeśli nie możesz umieścić tego w wierszu poleceń, możesz napisać aplikację pośredniczącą, która nic nie robi, ale rozgłasza tę intencję, a następnie ją zainstaluj, wywołaj i odinstaluj z wiersza poleceń. – 323go

Odpowiedz

7

Istnieje kilka sposobów poradzenia sobie z tym. Jeśli Twoją główną potrzebą jest móc szybko uruchomić aplikację za każdym razem, gdy dokonasz ponownej edycji, to najprostszym rozwiązaniem jest adb shell am intent -n com.example.app/.App.

Jeśli chcesz po prostu zrobić skrót (i nie obchodzi cię, gdzie) użyj com.android.launcher.action.INSTALL_SHORTCUT, jak wszyscy mówią. Będziesz potrzebować aplikacji lub bin, aby to zrobić, ponieważ transmisja am nie zajmie zagnieżdżonych intencji.

Jeśli pracujesz z konkretnym programem uruchamiającym (takim jak ADW Launcher), możesz zhakować bazę skrótów. Pozwoli to na określenie współrzędnych (skrót [2, 3] w tym przypadku)

adb shell sqlite3 /data/data/org.adw.launcher/databases/launcher.db "DELETE FROM favorites WHERE _id=1; INSERT INTO favorites VALUES(1,'MyApp','#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.example.app/.App;end',-100,0,2,3,1,1,0,-1,NULL,0,NULL,NULL,NULL,NULL,NULL);" 

Musisz powiedzieć wyrzutnię odświeżyć z bazy danych. Zwykle jedynym sposobem jest zabicie launchera. Późniejsze wersje am (polecenie powłoki ActivityManager) mają opcje ponownego uruchamiania pakietu, wcześniejsze wersje tego nie robią. W takim przypadku trzeba by napisać małą aplikację:

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
am.restartPackage("org.adw.launcher"); 
+0

co, jeśli chcę utworzyć skrót według kodu, do konkretnej aplikacji LANuncher i określonej aktywności w nim? –

+0

Wszystkie powyższe kody odnoszą się do określonego działania w określonej aplikacji. Mam tylko doświadczenie z ADW, inne wyrzutnie muszą przechowywać gdzieś informacje, bez wątpienia bazę danych. – Renate

+0

Tak, napisałem o tym post. tutaj: http://stackoverflow.com/questions/21394477/how-to-create-a-shortcut-of-an-app-on-a-specific-launcher-app. Jednym z komentarzy jest odpowiedź. –