在安卓系统中如何动态更改应用程序图标

7

我尝试以下代码来动态更改应用程序图标,但没有作用。

清单:

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

类:

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

我需要在我的应用程序图标上显示计数器,每当有任何传入消息时,就像Gmail应用程序一样。那么如何在Android中获取应用程序图标并动态设置图标?

1个回答

4

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

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


1
@user2436481:欢迎您构建一个应用小部件,提供这种带徽章的图标。但是,您无法影响应用程序本身的图标。此外,您在答案中概述的方法可能不会被所有主屏幕采纳(如com.android.launcher Intent操作所证明的那样),并且可能会导致N个启动器快捷方式,即使是那些采纳它的启动器也是如此。 - CommonsWare
@CommonsWare 你知道怎么动态地改变应用程序图标吗?假设你的应用程序具有根访问权限。 - android developer
@androiddeveloper:除非您用自己的主屏幕实现替换用户的主屏幕并支持此功能,否则Root将不太可能有所帮助。有数百甚至数千个主屏幕实现。它们中没有一个必须显示快捷方式,更不用说通过此广播从第三方应用程序接受它们,更不用说提供更改它们的某些能力了。 - CommonsWare
3
@CommonsWare 应用程序 SuperSU 允许您更改其图标,因此这是可能的。我认为可以通过更改图标并广播应用程序已被替换/更新的意图来实现。另外,即使启动器应用程序将图标存储在内存中,它们仍需要在下次启动时重新获取它们。 - android developer
1
@portfoliobuilder:一些主屏幕为此提供API,但很少有。Android中没有相关内容。 - CommonsWare
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接