8

在此处输入图像描述如何删除android中应用快捷方式图标中的徽章?当我以编程方式创建应用程序快捷方式以及为快捷方式指定的图标时,应用程序图标出现在图标的右下角。我不要那个徽章。

这是我使用的代码

    public static void addShortcutToHomeScreen(Context context)
{
    if (ShortcutManagerCompat.isRequestPinShortcutSupported(context))
    {
        ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, "#1")
                .setIntent(new Intent(context, Splash.class).setAction(Intent.ACTION_MAIN)) // !!! intent's action must be set on oreo
                .setShortLabel("Test")
                .setIcon(IconCompat.createWithResource(context, R.drawable.logo))
                .build();
        ShortcutManagerCompat.requestPinShortcut(context, shortcutInfo, null);
    }
    else
    {
        // Shortcut is not supported by your launcher
    }
}
4

7 回答 7

2

不,没有办法。这些附加选项是由启动器添加的,而不是您的应用程序本身。显然,如果您的应用程序无法卸载(例如系统应用程序),则卸载选项将不存在。

于 2018-10-12T08:31:41.443 回答
0

ShortcutInfoShortcutManager都没有这样的选项。它取决于启动器,它应该显示这个徽章,用户将知道它将在哪个应用程序中打开。如果没有此图标,则无法识别哪个应用程序添加了它(除了打开),这对用户不太友好......例如,您可以通过添加例如 FB 图标和“Facebook”快捷方式名称来模拟另一个应用程序,并Activity通过此快捷方式打开可能是伪造的登录屏幕。简而言之:出于安全原因,此图标存在/应该存在

在我的启动器中长按立即开始移动快捷方式(没有启动器图标的下拉菜单)并且我在屏幕顶部没有“应用程序信息”选项(在“移动模式”下),只有“删除”

也许考虑添加一个AppWidget风格化为带有应用名称的启动器图标?快捷方式从 API25 开始可用,小部件从一开始就在那里,并且从 API26 开始,您可以requestPinAppWidget(与添加快捷方式类似的对话框样式)

于 2019-04-05T08:40:08.097 回答
0

通过小部件屏幕(类似于此视频)添加快捷方式(不是应用小部件)可能是一种解决方法。创建一个 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-21T13:40:48.410 回答
-1

首先从 PlayStore 下载一个图标包(可供选择的负载)。返回带有违规图标的屏幕。按住您要更改的图标(即带有额外 Chrome 徽标的图标),然后按编辑。按更改图标。它会给你从图标包中选择的选项,所以按下它。然后,您将有大量图标可供选择,因此请选择最能代表当前图标的图标,或者选择完全不同的图标。然后点击确定。它将更改图标并且没有额外的徽章。

于 2019-03-21T09:21:44.550 回答
-2
private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
         channel.setShowBadge(false)

        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}
于 2019-04-05T10:56:49.340 回答
-2

试试这可能对你有用。mChannel.setShowBadge(false);

String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);
于 2019-03-30T09:29:29.763 回答
-2

在您的 Manifest.xml 中添加以下行

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

在桌面上创建快捷方式的代码,

 private void addShortcut() {
        //Adding shortcut for MainActivity
        //on Home screen
        Intent shortcutIntent = new Intent(getApplicationContext(), BottomNavigationActivity.class);
        shortcutIntent.setAction(Intent.ACTION_MAIN);

        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "My Shortcut");
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                        R.drawable.alert_clock));
        addIntent.putExtra("duplicate", false);
        addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        getApplicationContext().sendBroadcast(addIntent);


    }
于 2019-04-02T09:05:32.460 回答