我需要从库存启动器中删除指向我的应用的一个特定(更好)或所有快捷方式(最差情况)。我无法使用UNINSTALL_SHORTCUT广播,似乎它不起作用(simillar问题this。
我的应用程序是由系统证书签署的(它将安装在/ system / app中)所以我有一些想法,如何删除快捷方式。
有没有一种工作方式在ics中使用UNINSTALL_SHORTCUT?
我已经看到,当我卸载它时,库存启动器会删除指向我的应用程序的所有链接。有没有办法模拟卸载(或发送package_removed广播,具有系统权限)?也许写一下包管理器的一部分?
如果2无法通过重新安装/升级我的应用程序,有什么方法可以让包管理器发送PACKAGE_REMOVED广播? (我可以静默安装/升级应用程序,因为我拥有INSTALL_PACKAGES权限的系统权限。)
答案 0 :(得分:4)
我相信除了快捷方式之外,您还可以采用其他方式启动应用。
要在应用抽屉上不显示,只需删除
即可 <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
来自您的活动清单,它不会显示快捷方式
更新:您可以在不同的app / apk中分隔快捷方式,并在需要快捷方式时安装快捷方式“app”,并在不需要时卸载。
答案 1 :(得分:2)
似乎UNINSTALL_SHORTCUT无法使用具有空格键的EXTRA_SHORTCUT_NAME。
尝试从EXTRA_SHORTCUT_NAME中删除空格键。
这对我有用:
private void deleteShortCut(Context context) {
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
shortcutIntent.putExtra("someParameter", "HelloWorld");
Intent removeIntent = new Intent();
removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName");
removeIntent.putExtra("duplicate", false);
removeIntent
.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
context.sendBroadcast(removeIntent);
}
private void addShortCut(Context context) {
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
shortcutIntent.putExtra("someParameter", "HelloWorld");
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(context,
R.drawable.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(addIntent);
}
答案 2 :(得分:1)
删除快捷方式:
您可以点按并按住快捷方式,然后将该快捷方式拖到底部的垃圾箱中即可清除它。一旦变红,就放手吧。该快捷方式将被删除,但应用程序将保持安装状态。
添加快捷方式:
找到要创建快捷方式的应用后,您需要点击并按住应用程序。应用程序菜单将消失,您将返回主屏幕。您可以向左或向右拖动应用程序图标以查看不同的主屏幕。释放应用程序以将快捷方式放在任何位置。