我想通过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
null,因为Android应搜索包本身并使用在那里定义的app_icon。
该命令运行并生成
Broadcasting: Intent { act=com.android.launcher.action.INSTALL_SHORTCUT cmp=<package-name>/.activity (has extras) }
Broadcast completed: result=0
主屏幕没有添加任何快捷方式,我认为它与命令的开关有关。
任何人都遇到过这样的事情吗?
非常感谢任何帮助。
-JK
答案 0 :(得分: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);