0

我正在创建一个用于创建图标的应用程序,例如Ume Icon Changer,现在我正在使用此代码创建一个图标

    public static void createShortCut3(Context context, Drawable drawable, String shortcutname, String packagename){
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packagename);
    BitmapDrawable bd = (BitmapDrawable) drawable;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        ShortcutManager shortcutManager =
                context.getSystemService(ShortcutManager.class);

        if (shortcutManager.isRequestPinShortcutSupported()) {
            ShortcutInfo pinShortcutInfo =
                    new ShortcutInfo.Builder(context, "app-shortcut")
                            .setIntent(intent)
                            .setShortLabel(shortcutname)
                            .setIcon(Icon.createWithAdaptiveBitmap(bd.getBitmap()))
                            .build();

            Intent pinnedShortcutCallbackIntent =
                    null;
            pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(pinShortcutInfo);

            PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
                    pinnedShortcutCallbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);

            shortcutManager.requestPinShortcut(pinShortcutInfo,
                    successCallback.getIntentSender());

        }
    }
}

但是我所有的图标都是用这个徽章创建的。

在此处输入图像描述

据我了解,您不能只删除它。但在 ume 图标转换器和其他应用程序中,这是通过小部件以某种方式完成的。

如何实现类似的功能?

4

1 回答 1

0

Intent.EXTRA_SHORTCUT_INTENT是的,您可以通过已弃用的意图类型通过小部件创建快捷方式来创建没有该应用程序图标徽章的快捷方式。创建一个 filter 的活动<action android:name="android.intent.action.CREATE_SHORTCUT" />,并通过手动创建一个Intent.EXTRA_SHORTCUT_INTENT意图(而不是 via shortcutManager.createShortcutResultIntent())在该活动中创建快捷方式并使用setResult().

有关详细信息,请参阅此答案。请注意,使用不同的启动器时实际行为可能仍然不同(在某些启动器下可能不起作用)。我只在 Android 11 和 Android 12 下使用 Pixel Launcher 和 Microsoft Launcher 进行了测试。

于 2022-02-21T14:15:44.093 回答