我注意到Android Market上的某些应用会在下载并安装到您的设备后自动在桌面上创建快捷方式,而有些则不会。我该如何实现这种行为?
答案 0 :(得分:15)
向启动器发送意图。使用EXTRA_SHORTCUT_NAME和EXTRA_SHORTCUT_INTENT广播INSTALL_SHORTCUT意图。额外的EXTRA_SHORTCUT_DUPLICATE可用于帮助管理正在进行的重复快捷方式。可以在details中的Launcher2 project找到AOSP repository。
请注意,有些用户可能不喜欢未经许可创建快捷方式。
这是一些伪代码:
Intent installIntent = new Intent(InstallShortcutReceiver.ACTION_CREATE_SHORTCUT);
Intent myAppIntent = new Intent(Context.getPackageContext(), MyActivity.class);
installIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, Context.getString(R.string.app_name));
installIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, myAppIntent);
installIntent.putExtra(Intent.SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
Context.sendBroadcast(installIntent);
答案 1 :(得分:5)
事实证明,当您下载应用时,Android电子市场会自动安装桌面快捷方式。我在使用Honeycomb(3.0+)目标应用的Android 3.1平板电脑上注意到这种默认行为。对于在以前的Android版本上运行的应用程序来说,这似乎不是标准惯例,在首次下载/启动应用程序时需要明确的用户输入/权限。
答案 2 :(得分:3)
我测试了this demo。并将addShortcut()放在onCreate()中。然后从intelliJ部署,我的GEL(Google Experience Launcher)为第一次启动创建快捷方式。我担心它会继续创建快捷方式,但如果下次启动app,它似乎不会创建另一个快捷方式。如果需要,请自己尝试。
private void addShortcut() {
//Adding shortcut for MainActivity
//on Home screen
Intent shortcutIntent = new Intent(getApplicationContext(),
MainActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent
.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
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);
}
答案 3 :(得分:3)
添加快捷方式
private void addShortcut() {
//Adding shortcut for MainActivity
//on Home screen
Intent shortcutIntent = new Intent(getApplicationContext(),
MainActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent
.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ApplicationName");
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);
}
删除快捷方式
private void removeShortcut() {
//Deleting shortcut for MainActivity
//on Home screen
Intent shortcutIntent = new Intent(getApplicationContext(),
MainActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent
.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ApplicationName");
addIntent
.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
}
权限
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission
android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />