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");
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