我正在使用类似的codenippet,如下所示在主屏幕上添加应用程序快捷方式:
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setClassName(this, this.getClass().getName());
shortcutIntent.putExtra(EXTRA_KEY, "ApiDemos Provided This Shortcut");
// Then, set up the container intent (the response to the caller)
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_name));
Parcelable iconResource = Intent.ShortcutIconResource.fromContext(
this, R.drawable.app_sample_code);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
// Now, return the result to the launcher
setResult(RESULT_OK, intent);
创建快捷方式没有问题,但在卸载应用程序时,快捷方式仍保留在主屏幕上。卸载其他应用程序时,他们似乎也删除了相应的主屏幕快捷方式。这是我尝试使用我的“由代码创建快捷方式图标”
来实现的Stackoverflow上的任何Android专家是否知道在卸载应用时从主屏幕删除应用快捷方式需要什么?
我发现了一些相关的主题,但他们没有为我提供解决方案,但请随时赶上:
[1] Remove application from launcher programatically in Android
[2] How to remove application shortcut from home screen on uninstall automatically?
答案 0 :(得分:4)
我认为您可以尝试将此操作放在第二个Intent中:“com.android.launcher.action.INSTALL_SHORTCUT”
这对我有用,启动器图标安装在主屏幕上,当我卸载应用程序时,图标被删除。一直在苦苦挣扎。
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setClassName(this, this.getClass().getName());
Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
Parcelable iconResource = Intent.ShortcutIconResource.fromContext(
this, R.drawable.launcher_icon);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
sendBroadcast(intent);
希望这有帮助。
答案 1 :(得分:2)
我也有同样的问题。
最后,我发现在创建应用程序的快捷方式时,应用程序的意图必须包含Intent.ACTION_MAIN
操作,否则在卸载应用程序时不会从主屏幕中删除快捷方式(而不是使用的意图)用于安装具有com.android.launcher.action.INSTALL_SHORTCUT
操作的快捷方式。
希望它有所帮助。