Android - 从adb创建快捷方式

时间:2014-01-10 11:41:14

标签: android android-intent adb

我想通过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

1 个答案:

答案 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);