如何将应用程序的快捷方式添加到主屏幕

我知道这是没有logging,并不会在每个设备上工作,但我看到越来越多的应用程序在安装后将其快捷方式放置在主屏幕上。 发现一堆代码块怎么做,但对我来说,他们不合适。 这是我现在得到的。

  1. 需要清单中的许可。

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 
  2. 创build一个应该被调用的活动的意图。 Ex(来自cgeek):

     Intent shortcutIntent = new Intent(); shortcutIntent.setClassName("com.example.androidapp", "SampleIntent"); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
  3. 创build快捷方式

     Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon)); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); context.sendBroadcast(addIntent); 

我的问题是:在安装.apk之后,应该在哪里添加快捷方式? 我在启动器活动中尝试了这段代码,每次启动应用程序时都会创build一个(另一个故事)快捷方式。

Solutions Collecting From Web of "如何将应用程序的快捷方式添加到主屏幕"

据我所知,这是市场应用程序的一个可选function,而不是应用程序本身。 通过devise,应用程序不会收到有关自己正在安装的广播。 如果这些代码正常工作,最快可以执行它是用户第一次启动应用程序。 那就是说:

做。 不。 自动。 创build。 应用。 快捷键。

永远。

不要篡改用户的UIdevise。

我同意目前接受的答案,你不应该通过广播或安装时间来做到这一点。 没有用户交互或许可,不要做任何事情。

但是,如果您在应用程序中提供了button,则可以将其放入buttonOnClick处理程序中。 当用户select“添加快捷方式”选项时,它会添加一个快捷方式。

这可能只是将下面的代码添加到您的主要活动中创build方法

  Intent HomeScreenShortCut= new Intent(getApplicationContext(), MainActivity.class); HomeScreenShortCut.setAction(Intent.ACTION_MAIN); HomeScreenShortCut.putExtra("duplicate", false); //shortcutIntent is added with addIntent Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher)); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); 

添加将此权限添加到您的清单

  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 

我使用这个代码在主页上创build3个快捷方式:

 Intent HomeScreenShortCut= new Intent(getApplicationContext(), MainActivity.class); HomeScreenShortCut.setAction(Intent.ACTION_MAIN); HomeScreenShortCut.putExtra("duplicate", false); //shortcutIntent is added with addIntent Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName"); addIntent.putExtra( Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext( getApplicationContext(), R.drawable.ic_launcher ) ); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); 

上面的方法也有缺点。 采取主屏幕的快捷方式。