在主屏幕上安装启动器图标

11
当用户安装 Android 应用时,在应用程序菜单中创建一个启动器图标。我与许多用户交谈时发现,他们希望在安装应用程序时,图标能够自动出现在主屏幕 ("启动器") 上。
很多应用都以某种方式实现了这一点。我的首选是在安装时弹出一个窗口询问用户"您是否要添加快捷方式?"如果不可能,任何自动添加快捷方式的代码都可以。
Android 在这里提供了一大堆代码: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html。暗示着将该代码(和相关的 XML)添加到您的项目中即可解决问题。但是它没有我想要的效果。看起来所提供的代码是被动的,而我需要以某种方式触发它。
因此,我的问题是:
如何触发快捷方式的安装,以及如何确保它仅在某种"应用程序安装"事件的触发下发生一次?
PS: 一个复杂化的因素是,我正在使用 PhoneGap 构建我的应用程序,这意味着主要活动不是 "Activity" 而是 "DroidGap"。

1
原来,如果你在应用程序中包含了INSTALL_SHORTCUT权限,通过Android市场安装的应用程序将自动安装启动器快捷方式。但是你只有在发布应用程序后才能知道:即使通过其他方式下载APK并在手机上安装,也无法实现这一点。 - Wytze
3个回答

5
    Intent shortcutIntent = new Intent(getApplicationContext(), HomeScreen.class);      
    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AIMS ICD");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.aims));
    addIntent.putExtra("duplicate", false);
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);

1
在这个例子中,它返回了setResult(...)中的intent。我相信你需要运行sendBroadcast(intent)来触发快捷方式的安装。

Triad,感谢您的评论。我已经尝试从App.java(主要活动)和LauncherShortcuts.java本身的不同位置运行sendBroadcast(intent)。 没有结果。 - Wytze
你的 AndroidManifest.xml 文件中是否也有 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> - triad
我还注意到示例代码没有调用intent.setAction(Intent.ACTION_CREATE_SHORTCUT),这也是必要的。 - triad
嗨 @triad,我已经实现了相同的功能,并成功创建了图标,但现在我无法使用快捷方式启动应用程序,有什么建议吗? - Shani Goriwal

0
类DroidGap扩展了Activity,因此您可以将链接中提供的代码直接添加到其中以添加快捷方式。

Simon,我尝试添加了链接中的代码,但没有起作用。我已经包含了LauncherShortcuts.java和LauncherShortcuts.xml,但是当我安装我的应用程序时什么也没有发生。也许你在说“添加链接中的代码”时有比我更具体的想法? - Wytze

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