安装应用程序时创建唯一的快捷方式在不同的Android版本上表现不同

时间:2013-07-02 20:03:49

标签: android android-intent

我在安装应用时使用以下代码创建快捷方式:

AndroidManifest.xml中的

<!-- for creating a shortcut in the home screen -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

在主要活动的onCreate()中:

// an Intent to create a shortCut
    Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    //repeat to create is forbidden
    shortcutIntent.putExtra("duplicate", false);
    //set the name of shortCut
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, this.getString(R.string.app_name));
    //set icon
    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher);
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    //set the application to lunch when you click the icon
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT
            , new Intent(getApplicationContext() , MainActivity.class));
    //sendBroadcast,done
    sendBroadcast(shortcutIntent);

这些代码在Android 4.0.4中运行良好,它在第一次创建快捷方式并发送一个Toast,说第一次安装后该快捷方式已经存在。但是在Android 4.2.2中,我可以通过单击后退键创建许多重复的快捷方式,然后再次输入应用程序。

有没有办法在这两个版本的Android上工作?

提前致谢:)

1 个答案:

答案 0 :(得分:-1)

shortcutIntent.putExtra(&#34; duplicate&#34;,false)在4.2版本中不起作用。我认为你必须使用其他一些方法来创建独特的捷径。

如果失败,那么只需卸载快捷方式并再次安装。如:

addIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);             
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);

并在清单中使用UNINSTALL_SHORTCUT和INSTALL_SHORTCUT权限。

这个粗略的想法很适合每个版本。