2014-01-10 147 views
3

我想通過adb爲正在開發的應用程序創建快捷方式。Android - 從adb創建快捷方式

我查看了Grepcode,看看Android的期望是如何被格式化的。 我還檢查了AM documentation以嘗試創建所需的意圖。

到目前爲止,我得到了很多變化的下面的行,但這一個似乎是最合適的。

adb -d shell am broadcast \ 
-a com.android.launcher.action.INSTALL_SHORTCUT \ 
--es Intent.EXTRA_SHORTCUT_NAME "<shortcut-name>" \ 
--esn Intent.EXTRA_SHORTCUT_ICON_RESOURCE \ 
<package-name>/.activity 

我已經離開了EXTRA_SHORTCUT_ICON_RESOURCE空,由於Android應該尋找包本身,使用其中定義的app_icon。

命令運行併產生

Broadcasting: Intent { act=com.android.launcher.action.INSTALL_SHORTCUT cmp=<package-name>/.activity (has extras) } 
Broadcast completed: result=0 

沒有快捷方式添加到主屏幕,我想它是與命令的開關。

任何人都遇到過這樣的事情嗎?

任何幫助非常感謝。

-JK

回答

1

服用default ICS Launcher as reference,我看到的意圖期望一個額外的,你不發送:android.intent.extra.shortcut.INTENT。這個意圖是用來啓動快捷方式指向的應用程序的意圖。意識到這種額外的預期類型是可以理解的。到目前爲止我知道,am不能夠發送這樣的數據結構。

作爲解決方法,您可以創建一個非常簡單的應用程序來發送此廣播。

首先,允許<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />添加到AndroidManifest.xml中

然後,您可以在活動的嘗試:

Intent shortcut = new Intent(Intent.ACTION_VIEW); 
shortcut.setClassName("<package-name>", "<package-name>.activity"); 

Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "<shortcut-name>"); 
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcut); 

sendBroadcast(intent); 
+0

所以我們不能用命令行的任何廣播,並創建一個快捷方式在主屏幕上的任何應用程序? – Ambi

+0

@Ambi你不會像我所知道的那樣。但自2014年以來,不要對Android進行調整,所以我的理解可能已經過時。 –

+0

謝謝你的解釋。我會檢查是否有任何其他的調整。順便說一句,是否有可能做一個應用程序,爲其他應用程序創建主屏幕快捷方式? – Ambi