如何在android中动态更改应用程序图标

如何在android中动态更改应用程序图标,android,Android,为了动态更改应用程序图标,我尝试了下面的代码,但没有用 舱单: <uses-permission android:name="com.android.launcher.action.INSTALL_SHORTCUT"/> 每当收到任何消息时,我都需要在应用程序图标上显示计数器 我的应用程序像gmail应用程序。那怎么办 我可以在android中动态获取应用程序图标并设置图标吗?您不能动态修改应用程序图标。Gmail不会动态修改应用程序图标 主屏幕——实际显示这些内容的应用程序——可

为了动态更改应用程序图标,我尝试了下面的代码,但没有用

舱单:

<uses-permission android:name="com.android.launcher.action.INSTALL_SHORTCUT"/>
每当收到任何消息时,我都需要在应用程序图标上显示计数器 我的应用程序像gmail应用程序。那怎么办
我可以在android中动态获取应用程序图标并设置图标吗?

您不能动态修改应用程序图标。Gmail不会动态修改应用程序图标


主屏幕——实际显示这些内容的应用程序——可以选择将徽章应用于某些应用程序图标。您可以创建一个应用程序小部件,它看起来像一个带有徽章的图标。

哦,但我有一个要求,每当收到消息时,它都应该在应用程序的右上方显示一些计数器message@user2436481:欢迎您构建一个提供此类徽章图标的应用程序小部件。您不能影响应用程序图标本身。此外,您在回答中概述的方法可能不会得到所有主屏幕的尊重(如
com.android.launcher
Intent
操作所示),并且可能最终创建N个启动器快捷方式,即使是那些遵守它的启动器也会如此。@commonware您是否知道如何动态更改应用程序图标,假设您的应用程序具有root访问权限?@androiddeveloper:root将不太可能提供帮助,除非用您自己的支持此功能的主屏幕实现替换用户的主屏幕。有成百上千的主屏幕实现。甚至不需要显示快捷方式,更不用说通过此广播从第三方应用程序接受快捷方式,更不用说提供一些更改快捷方式的功能。@Commonware应用程序SuperSU允许您更改其图标,因此这是可能的。我认为它可以通过改变图标并广播应用程序被替换/更新的意图来工作。此外,即使launcher应用程序将图标存储在内存中,它们也需要在下次启动时再次获取图标。
Intent myLauncherIntent = new Intent();
myLauncherIntent.setClassName("your.package.name", "YourLauncherActivityName");
myLauncherIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, myLauncherIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Application Name");
intent.putExtra
       (
        Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
        Intent.ShortcutIconResource.fromContext
                                    (
                                         getApplicationContext(),
                                         R.drawable.app_icon
                                    )
       );
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");

getApplicationContext().sendBroadcast(intent);