通过ADB在Android上创建快捷方式

12

我能否在我的安卓启动器上通过ADB创建快捷方式? 我有一个.bat文件,可以通过双击从我的PC安装应用程序,但是之后我总是需要在启动器的庞大(不那么用户友好)的应用列表中搜索。如果能将此功能添加到我的.bat文件中将会很棒。 我已经尝试在网上搜索了,但没有任何运气:S。

提前致谢


3
有一个相对完善记录的com.android.launcher.action.INSTALL_SHORTCUT,你可以通过adb shell broadcast来调用它,但其中一个额外参数是启动意图。如果你无法在命令行上放置该参数,你可以编写一个什么都不做只广播此意图的子应用程序,然后从命令行安装、调用并卸载它。 - 323go
1个回答

12

有几种处理方法。如果您的主要需求是每次重新编辑时能够快速启动应用程序,那么 adb shell am intent -n com.example.app/.App 是最简单的解决方案。

如果您只想创建一个快捷方式(而且不关心位置),像其他人说的一样使用 com.android.launcher.action.INSTALL_SHORTCUT。您需要一个应用程序或二进制文件来执行此操作,因为 am 广播不会接收嵌套意图。

如果您正在使用特定的启动器(例如 ADW Launcher),则可以修改快捷方式数据库。这将允许您指定快捷方式的坐标(在这种情况下是 [2, 3])。

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

你需要告诉启动器从数据库中刷新。通常唯一的方法是杀死启动器。较新版本的am(ActivityManager shell命令)具有重新启动软件包的选项,较早版本则没有。在这种情况下,您需要编写一个小应用程序:

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

如果我想通过代码创建快捷方式,指向特定的启动器应用程序和其中的特定活动,该怎么办? - android developer
以上所有的代码都涉及到特定应用中的特定活动。我只熟悉ADW,其他的启动器肯定会将信息存储在某个地方,很可能是数据库中。 - Renate
是的,我已经发了一篇帖子。在这里:http://stackoverflow.com/questions/21394477/how-to-create-a-shortcut-of-an-app-on-a-specific-launcher-app 。其中一个评论就是答案。 - android developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接