4

我需要从股票启动器中删除指向我的应用程序的一个特定(更好)或所有快捷方式(最坏情况)。我无法使用 UNINSTALL_SHORTCUT 广播,似乎它不起作用(与此类似的问题.

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

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

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

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

4

3 回答 3

4

我相信除了从快捷方式之外,您还有另一种方式来启动您的应用程序。

要不显示在应用程序抽屉上,只需删除

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

从您的活动清单中,它不会显示快捷方式

更新:您可以在不同的应用程序/apk 中分离快捷方式,并在需要快捷方式时安装快捷方式“应用程序”并在不需要时卸载。

于 2012-06-04T17:40:57.813 回答
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);
}
于 2012-06-11T11:32:34.400 回答
1

要删除快捷方式:

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

添加快捷方式:

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

于 2012-10-10T18:24:52.050 回答