2013-01-19 13 views
5

Es ist möglich, eine Verknüpfung von ADB auf dem Launcher von meinem Android zu erstellen? Ich habe eine .bat-Datei, um meine Anwendungen von meinem PC zu installieren (durch Doppelklick), aber danach muss ich immer auf die riesige (nicht so benutzerfreundliche) Anwendungsliste des Launcher suchen. Wenn es möglich wäre, diese Funktion zu meiner .bat-Datei hinzuzufügen, wäre das großartig. Ich versuche schon im Internet ohne Glück zu suchen: S.Erstellen von Verknüpfungen in Android über ADB

Vielen Dank im Voraus

+1

Es gibt das relativ gut dokumentierte 'com.android.launcher.action.INSTALL_SHORTCUT', dass Sie durch' adb shell broadcast' nennen könnten, aber man der Extras ist die Launch-Absicht. Wenn Sie das nicht in der Befehlszeile platzieren können, könnten Sie eine Stub-App schreiben, die nur diese Absicht ausstrahlt und dann installiert, aufruft und über die Befehlszeile deinstalliert. – 323go

Antwort

7

Es gibt ein paar Möglichkeiten, damit umzugehen. Wenn es Ihr Hauptanliegen ist, Ihre Anwendung bei jeder Neubearbeitung schnell zu starten, ist adb shell am intent -n com.example.app/.App die einfachste Lösung.

Wenn Sie nur eine Verknüpfung erstellen möchten (und Sie nicht wo), verwenden Sie com.android.launcher.action.INSTALL_SHORTCUT, wie jeder sagt. Sie benötigen eine App oder einen Bin, um das zu tun, da die Übertragung keine verschachtelten Absichten erfordert.

Wenn Sie mit einem bestimmten Launcher (wie ADW Launcher) arbeiten, können Sie die Datenbank der Verknüpfungen hacken. Dies ermöglicht es Ihnen die Koordinaten der Verknüpfung zu spezifizieren ([2, 3] in diesem Fall)

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

Sie müssen den Launcher sagen, aus der Datenbank zu aktualisieren. Normalerweise besteht die einzige Möglichkeit darin, den Launcher zu töten. Spätere Versionen von am (der ActivityManager-Shell-Befehl) haben Optionen zum Neustarten eines Pakets, frühere Versionen nicht. In diesem Fall müssen Sie eine kleine App schreiben:

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

Was ist, wenn ich die Verknüpfung nach Code, einer bestimmten lanuncher App und einer bestimmten Aktivität darin erstellen möchte? –

+0

Der gesamte obige Code bezieht sich auf eine bestimmte Aktivität in einer bestimmten App. Ich habe nur Erfahrung mit ADW, andere Launcher müssen die Informationen irgendwo speichern, ohne Zweifel eine Datenbank. – Renate

+0

Ja, ich habe einen Beitrag dazu gemacht. hier: http://stackoverflow.com/questions/21394477/how-to-create-a-shortcut-of-an-app-on-a-specific-launcher-app. Einer der Kommentare dort ist die Antwort. –

Verwandte Themen