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

时间:2011-08-08 20:59:30

标签: android shortcut android-3.0-honeycomb

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

  1. 需要清单中的权限。

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

    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);
    
  4. 我的问题是: 在安装.apk之后,这段代码应该去哪里添加快捷方式?我在启动器活动中尝试了这段代码,每次应用程序启动时都会创建损坏的(另一个故事)快捷方式。

5 个答案:

答案 0 :(得分:19)

据我所知,这是Market应用程序的可选功能,而不是应用程序本身。根据设计,应用程序不会收到有关自身安装的广播。如果该代码有效,则最快可以执行它,这是用户第一次启动应用程序。那说:

执行。不。自动。创建。应用。快捷方式。

自从。

不要篡夺用户的UI设计。

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

这可以在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" />

答案 3 :(得分:0)

我使用此代码在主页上创建了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);

答案 4 :(得分:0)

上述相同方法存在缺点。将快捷方式带到主屏幕。