2012-02-26 71 views
10

当用户安装Android应用程序时,会在应用程序菜单中创建启动器图标。我与之交谈的许多用户预计,当他们安装应用程序时,图标应自动出现在主屏幕(“启动板”)上。在主屏幕上安装启动器图标

许多应用程序以某种方式实现这一点。我的首选是在安装时出现一个窗口,询问用户“你想添加一个快捷方式吗?”如果这是不可能的,任何自动添加快捷方式的代码都会执行。

Android在这里给出了一堆代码:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html 暗示将这些代码(和相关的xml)添加到您的项目中将会有效。但它没有我想要的效果。看起来提供的代码是被动的,我需要以某种方式触发它。

所以我的问题是:

如何触发快捷的安装,以及如何确保它只会发生一次,最好由某种“应用程序安装”事件触发的?

PS: 一个复杂的因素是我使用PhoneGap构建我的应用程序,这意味着主要活动不是“活动”而是“DroidGap”。

+1

发现通过Android Market安装的应用会自动安装启动器快捷方式,如果您包含INSTALL_SHORTCUT权限。但是直到你发布你的应用程序,你才能知道:即使从APK下载到你的手机,通过其他方式安装也无济于事。 – Wytze 2012-03-16 14:39:26

回答

1

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

+0

黑社会,感谢您的评论。我曾尝试在App.java(主要活动)和LauncherShortcuts.java本身的不同位置运行sendBroadcast(intent)。没有结果。 – Wytze 2012-02-27 09:29:57

+0

你是否也在你的'AndroidManifest.xml'中拥有''? – triad 2012-02-27 09:38:35

+0

我也注意到示例代码不会调用'intent.setAction(Intent.ACTION_CREATE_SHORTCUT)',这也是必需的。 – triad 2012-02-27 09:45:04

0

DroidGap类扩展了Activity,因此您只需从您提供的用于添加快捷方式的链接添加代码即可。

+0

Simon,我尝试添加链接中的代码。这没有用。我包括LauncherShortcuts.java和LauncherShortcuts.xml,但是当我安装我的应用程序时没有任何反应。当你说“从链接添加代码”时,或许你比我更具体的想法? – Wytze 2012-02-27 09:29:00

4
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); 
相关问题