如何删除应用程序快捷方式图标中的徽章?

时间:2018-06-07 12:14:03

标签: android android-shortcut pinned-shortcut

enter image description here如何删除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
    }
}

6 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

首先从PlayStore下载图标包(加载以供选择)。 返回带有问题图标的屏幕。 按住您要更改的图标(即带有额外的Chrome徽标的图标),然后按编辑。 按更改图标。 它会为您提供从图标包中进行选择的选项,然后按一下。 然后,您将有大量的图标选择,因此请选择最能代表当前图标的图标,或者选择截然不同的图标。 然后点击确定。 它将更改图标,并且没有多余的徽章。

答案 2 :(得分:0)

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

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

也许考虑添加一个带有应用名称的程式化为启动器图标的AppWidget?自API25开始提供快捷方式,从一开始就提供向导,并且自API26起您可以requestPinAppWidget(类似于添加快捷方式的对话框样式)

答案 3 :(得分:0)

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);
    }
}

答案 4 :(得分:-1)

尝试一下可能适合您。 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);

答案 5 :(得分:-1)

在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);


    }