Bunun üstesinden gelmek için birkaç yol var. Eğer ana ihtiyacınız yeniden düzenlediğiniz her defasında uygulamanızı hızlı bir şekilde başlatacaksa, o zaman en kolay çözüm adb shell am intent -n com.example.app/.App
'dur.
Herkesin dediği gibi sadece bir kısayol (ve nerede umurunda değil) kullanmak isterseniz com.android.launcher.action.INSTALL_SHORTCUT
kullanın. Yayın yapmak iç içe geçmiş amaçlara sahip olamayacağından bunu yapmak için bir uygulamaya veya bölüme ihtiyacınız olacaktır.
Belirli bir başlatıcıyla (ADW Launcher gibi) çalışıyorsanız, kısayol veritabanını kesebilirsiniz. Bu
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);"
Sen veritabanından yenilemek için başlatıcısı anlatmak gerekir (bu durumda [2, 3]) kısayol koordinatlarını belirten sağlayacaktır. Genellikle tek yol başlatıcıyı öldürmektir. Daha sonraki am sürümleri (ActivityManager kabuk komutu) bir paketi yeniden başlatmak için seçeneklere sahiptir, daha eski sürümler yoktur. Bu durumda küçük bir uygulama yazmak gerekir:
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage("org.adw.launcher");
Eğer 'yoluyla adb shell broadcast' diyebiliriz ki nispeten iyi belgelenmiş' com.android.launcher.action.INSTALL_SHORTCUT' var, ama bir Ekstralar fırlatma amacıdır. Bunu komut satırına yerleştiremezseniz, hiçbir şey yapmayan, ancak bu amacı yayınlayan, sonra yükleyip, onu çağırıp komut satırından kaldıran bir saplama uygulaması yazabilirsiniz. – 323go