我想在安装应用程序后立即在主屏幕上创建应用程序的快捷方式/启动器图标(甚至在我开始之前)。那可能吗?我怎么能这样做?
答案 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)
创建调用快捷方式的函数:
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" />
答案 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);
}