从ic中的stock启动器中删除指向我的应用程序的快捷方式

时间:2012-06-04 17:26:10

标签: android android-4.0-ice-cream-sandwich android-launcher shortcuts android-homebutton

我需要从库存启动器中删除指向我的应用的一个特定(更好)或所有快捷方式(最差情况)。我无法使用UNINSTALL_SHORTCUT广播,似乎它不起作用(simillar问题this

我的应用程序是由系统证书签署的(它将安装在/ system / app中)所以我有一些想法,如何删除快捷方式。

  1. 有没有一种工作方式在ics中使用UNINSTALL_SHORTCUT?

  2. 我已经看到,当我卸载它时,库存启动器会删除指向我的应用程序的所有链接。有没有办法模拟卸载(或发送package_removed广播,具有系统权限)?也许写一下包管理器的一部分?

  3. 如果2无法通过重新安装/升级我的应用程序,有什么方法可以让包管理器发送PACKAGE_REMOVED广播? (我可以静默安装/升级应用程序,因为我拥有INSTALL_PACKAGES权限的系统权限。)

3 个答案:

答案 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)

删除快捷方式:

您可以点按并按住快捷方式,然后将该快捷方式拖到底部的垃圾箱中即可清除它。一旦变红,就放手吧。该快捷方式将被删除,但应用程序将保持安装状态。

添加快捷方式:

找到要创建快捷方式的应用后,您需要点击并按住应用程序。应用程序菜单将消失,您将返回主屏幕。您可以向左或向右拖动应用程序图标以查看不同的主屏幕。释放应用程序以将快捷方式放在任何位置。