如何在应用安装时将我的应用快捷方式添加到主屏幕? [复制]
Posted
技术标签:
【中文标题】如何在应用安装时将我的应用快捷方式添加到主屏幕? [复制]【英文标题】:How can I add my application's shortcut to the homescreen upon app installation? [duplicate] 【发布时间】:2013-08-22 00:56:30 【问题描述】:我想在安装我的应用程序后立即在主屏幕上创建我的应用程序的快捷方式/启动器图标(甚至在我启动它之前)。那可能吗?我该怎么做?
【问题讨论】:
android在安装时不会默认自动为应用添加快捷方式吗? @Renan - 将快捷方式添加到应用列表,但不添加到主屏幕。 是的。应用程序启动器已添加到应用程序列表中,但不在主屏幕上。但从 Play-store 下载的应用程序通常会在主屏幕上创建快捷方式。 【参考方案1】:从 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"
权限
【讨论】:
从哪里触发这个?我想在启动我的应用程序之前创建快捷方式,即在我安装它之后。 您可以通过自己的应用程序创建它,也可以通过其他正在运行的应用程序创建它。没有其他方法。 PlayStore 之所以能够做到这一点,是因为它安装了您的应用程序。这样想:如果设备上已经有你的应用程序在运行,并且它正在监听 apk 安装的广播事件,那么它可以为你执行这个添加快捷方式操作。但这不会是正常情况,你不能指望你在每台设备上都有这样的设施。 好的,找到了。这需要“com.android.launcher.permission.INSTALL_SHORTCUT”权限。 这个答案应该被接受。 创建快捷方式后,下次它会向我们发送消息Shortcut "AppName" already exists
。如何隐藏此 toast 消息?【参考方案2】:
您忘记添加权限:
<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#!
【讨论】:
我没有忘记这一点。但这不会强制应用在安装时创建快捷方式:P 否则添加注意:这个答案现在是错误的。例如,请参阅Robin's answer 了解执行此操作的方法。
据我所知,应用程序无法强制自己进入主屏幕。它被添加到启动器应用程序维护的应用程序列表中,但主屏幕通常在用户控制之下。让应用程序能够弄乱主屏幕将是公开滥用的邀请。
【讨论】:
感谢您的帮助。但我发现一些应用程序是从 Play 商店安装的,它们会自动创建快捷方式。 我的所有设备中也都有这种情况。刚买了一部新手机,从 Google Play 重新下载了所有内容......图标只有在没有更多空间时才停止出现在我的屏幕上。 在Play商店中,我们有一个设置“在主屏幕上自动添加快捷方式”。 但如果 Play 商店应用程序正在创建快捷方式,我认为它在某种程度上是可行的。 :P :( @SP - 是 Play 商店(与启动器合作),而不是您的应用,这样做。如果您在商店中关闭该选项,那么快捷方式将不会安装在主屏幕上(至少在安装时不会)。正如 Robin 指出的那样,当应用程序运行时,情况就不同了。【参考方案4】:如果您安装您的应用程序,您的应用程序、任何服务或其他进程都不会处于活动状态! Android 希望用户在“打开”应用程序中迈出第一步。 您无法直接安装快捷方式!这就是答案。 注意:在大多数设备上,启动器将为您的应用程序本身创建一个快捷方式。
在用户以某种方式启动您的应用程序至少一次后,您能否在运行时安装快捷方式? :是的(见 Robins 的回答)。
有解决方法吗? 也许,但没有一个好人。
更新,另一个提示:如果您在用户的设备上已经有一个应用程序。 (例如,如果您安装的第二个应用程序是“going pro”之类的关键),那么您实际上可以从第一个应用程序启动第二个应用程序,而无需用户启动第二个应用程序(并添加快捷方式) .
【讨论】:
@downvoter,如果您对某人的回答投反对票,请添加评论。否则,downvote 是没有用的。在这个问题的背景下,我的答案是唯一完全正确的。【参考方案5】:创建函数来调用快捷方式的意图:
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);
写上 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();
设置清单的权限:
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
【讨论】:
【参考方案6】:首先,添加添加快捷方式到manifest的权限:
<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);
【讨论】:
它正在工作,但每次启动应用程序时都会创建应用程序图标。 Sharedpref 可用于防止这种情况发生,您也可以将其添加到您的答案中。 :) 无论如何谢谢以上是关于如何在应用安装时将我的应用快捷方式添加到主屏幕? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
PWA:如何以编程方式触发:“添加到主屏幕”?在 iOS Safari 上