【问题标题】:How to add app's shortcut to the home screen如何将应用程序的快捷方式添加到主屏幕
【发布时间】:2011-10-22 17:50:14
【问题描述】:

我知道它没有记录在案,也不会在所有设备上运行,但我看到越来越多的应用在安装后将快捷方式放在主屏幕上。 找到一堆代码块如何做到这一点,但对我来说它们不适合。 这就是我现在得到的。

  1. 需要清单中的权限。

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    
  2. 创建应调用的活动意图。前(来自 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. 自己创建快捷方式

    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 后,此代码应该去哪里添加快捷方式?我在启动器活动中尝试了此代码,每次应用启动时它都会创建损坏的(另一个故事)快捷方式。

【问题讨论】:

  • 作为用户我也同意,真的很烦。但是...作为开发人员,如果有人提出要求并且我解释说不能这样做,但仍然坚持要我这样做。是的,你可以在 ICS 之后这样做。权限是必要的,其余的check this answer
  • 这个答案不适用于 kitkat...

标签: android shortcut android-3.0-honeycomb


【解决方案1】:

据我所知,这是市场应用程序的可选功能,而不是应用程序本身。按照设计,应用程序不会收到有关其自身正在安装的广播。如果该代码有效,您可以尽快执行它是用户第一次启动应用程序。也就是说:

做。不是。自动地。创建。应用程序。快捷方式。

曾经。

不要篡改用户的 UI 设计。

【讨论】:

  • “不要。自动。创建。应用程序。快捷方式。”我不同意。 Viber 这样做,而 Viber 并没有那么邪恶。这很有用,因为 Viber 的目标人群不是书呆子或极客。他们不知道如何管理主屏幕。这是事实。
  • 应用程序海洋中的一种特殊情况不足以忽视一个相当基本且没有争议的经验法则。如果用户不了解如何管理他们的主屏幕,则更有理由不将他们不知道如何删除的内容放在那里。
  • 恕我直言,我想在屏幕上立即安装并尝试使用它的应用程序快捷方式,而不是花几秒钟在所有应用程序中搜索它,这很方便。无法在 android 上管理基本事物的人通常不会使用这些设备。没有冒犯,但你的论点没有说服力。
  • 真的厌倦了人们认为自己比其他人更了解一切的人说“不要这样做,不要这样做,这是邪恶的”。
  • 重点是,Android 是一个不仅用于智能手机或平板电脑的操作系统(有成千上万的设备!)。在其他情况下,您可以为 Android 开发应用程序,有时甚至根本不使用市场。在通常情况下,人们可以有很好的理由去做你可以称之为邪恶的事情。这也适用于 Android 开发团队:声明在通常情况下永远不应该做某事并不是在特定点上限制 API 的借口。这与我们除了良好的 API 和操作系统之外的灵活性背道而驰。
【解决方案2】:

我同意当前接受的答案,即您不应通过接收广播或安装时间来执行此操作。未经用户交互或许可,请勿做任何事情。

但是,如果您在应用程序中提供了一个按钮,您可以将它放在按钮的 OnClick 处理程序中。然后,当用户选择“添加快捷方式”选项时,它会添加一个快捷方式。

【讨论】:

    【解决方案3】:

    只需在 oncreate 方法中将以下代码添加到您的主要活动中即可

            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" />
    

    【讨论】:

    • 它添加了快捷方式,但如果您尝试使用它打开应用程序,它会发送一个“应用程序未安装”的祝酒词。我在这里错过了什么吗?谢谢。
    【解决方案4】:

    我使用此代码在主页上创建了 3 个快捷方式:

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

    【讨论】:

    • “重复”有什么用?
    • @androiddeveloper 这是为了避免重复图标(如果它已经存在于主屏幕中,它不会创建图标)。
    • 我不知道这个。您在哪里找到有关此参数的信息?你认识其他人吗?
    • 说,将快捷方式与另一个应用程序的图标放在一起的正确方法是什么?您显然不能使用 ShortcutIconResource...
    【解决方案5】:

    上述同样的方法也有不足之处。使用主屏幕的快捷方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多