如何在应用程序安装中将应用程序的快捷方式添加到主屏幕?

时间:2013-08-20 04:51:09

标签: android android-manifest launcher homescreen

我想在安装应用程序后立即在主屏幕上创建应用程序的快捷方式/启动器图标(甚至在我开始之前)。那可能吗?我怎么能这样做?

6 个答案:

答案 0 :(得分:44)

从ICS开始,你可以这样做:

public void createShortCut(){
    Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    shortcutintent.putExtra("duplicate", false);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname));
    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.icon);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext(), EnterActivity.class));
    sendBroadcast(shortcutintent);
}

请同时参阅启动器的源代码:this link

编辑:如果有人会错过阅读评论,请添加以下内容。

这需要"com.android.launcher.permission.INSTALL_SHORTCUT"权限

答案 1 :(得分:13)

您忘了添加权限:

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

这里很棒的教程: http://androidforbegineers.blogspot.in/2014/01/android-home-screen-shortcut.html#

答案 2 :(得分:12)

注意:这个答案现在错了。例如,请参阅Robin's answer以了解实现此目的的方法。


据我所知,应用无法强行进入主屏幕。它会添加到启动器应用程序维护的应用程序列表中,但主屏幕通常由用户控制。使应用程序能够混乱主屏幕将是一个公开的滥用邀请。

答案 3 :(得分:5)

如果您安装了应用程序,则您的应用程序,任何服务或其他进程都不会处于活动状态! Android希望用户在“打开”应用程序时迈出第一步。 您无法直接安装 快捷方式!这就是答案。 注意:在大多数设备上,启动器将为您的应用程序本身创建一个快捷方式。

在用户以某种方式启动您的应用程序至少一次后,您是否可以在运行时安装快捷方式? :(见罗宾斯回答)。

有解决方法吗? 也许,但没有好的。

更新,另一个提示:如果您已在用户的设备上安装了应用程序。 (例如,如果您安装的第二个应用程序是“go pro”或其他内容的关键),那么您实际上可以从第一个应用程序启动第二个应用程序,而无需用户启动第二个应用程序(并添加快捷方式)

答案 4 :(得分:3)

  1. 创建调用快捷方式的函数:

    private void criarAtalho() {
        Intent shortcutIntent = new Intent(getApplicationContext(), SplashScreen.class);
        shortcutIntent.setAction(Intent.ACTION_MAIN);
        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "nomeDaApp");
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.mipmap.ic_launcher));
    
        addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        addIntent.putExtra("duplicate", false);  //may it's already there so don't duplicate
        getApplicationContext().sendBroadcast(addIntent);
    }
    
  2. 在OnCreat上写下函数调用:

    if(!getSharedPreferences("APP_PREFERENCE", Activity.MODE_PRIVATE).getBoolean("IS_ICON_CREATED", false)){
        criarAtalho();
        getSharedPreferences("APP_PREFERENCE", Activity.MODE_PRIVATE).edit().putBoolean("IS_ICON_CREATED", true).commit();
    }
    
  3. 设置清单上的权限:

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

答案 5 :(得分:1)

首先,添加添加清单快捷方式的权限:

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

然后,调用下面的函数。

public void createShortcut(){
    Intent intentShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
    Parcelable appicon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher);
    intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, appicon);
    intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext(), MainActivity.class));
    intentShortcut.putExtra("duplicate", false);
    sendBroadcast(intentShortcut);
}