gpt4 book ai didi

android - 在我的应用程序中使用图标包

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:13 24 4
gpt4 key购买 nike

我的应用包含一项功能,用于列出用户设备上安装的所有应用,并附上图标。现在用户请求此列表中的图标包支持。

目前我列出已安装的应用程序:

final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

final List<ResolveInfo> rgRi = pm.queryIntentActivities( mainIntent, 0);

然后为每个 ResolveInfo 加载图标:

.loadIcon(application.getPackageManager());

这给了我应用程序的图标,但不是图标包图标,而是默认图标。

如果有可用的应用程序图标包图标,我该如何访问?

最佳答案

回答我自己的问题。这是一个关于从图标包加载图标的简短教程(包含伪代码)。

获取已安装的图标包

使用 Intent 过滤器查找应用 com.gau.go.launcherex.themeorg.adw.launcher.THEMES .可能其他人也存在。使用例如

PackageManager.queryIntentActivities(new Intent("org.adw.launcher.THEMES"), PackageManager.GET_META_DATA);

加载appfilter.xml

它可以作为资源找到,也可以在图标包的 Assets 文件夹中找到。使用

int i = Resources.getIdentifier("appfilter", "xml", "iconpack.package.name");
Resources.getXml(i);

InputStream s = iconPackres.getAssets().open("appfilter.xml");
XmlPullParserFactory f = XmlPullParserFactory.newInstance();
f.setNamespaceAware(true);
XmlPullParser p = f.newPullParser();
p.setInput(s, "utf-8");

解析appfilter.xml

Appfilter.xml描述图标包内容。除其他外,themer 还能够在背景上绘制图标、提供 mask 等。XDA 上对此进行了所有描述:http://forum.xda-developers.com/showthread.php?t=1649891 .我们最感兴趣的是 <item>标签例如

<item component="ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}" drawable="com_android_browser_browseractivity" />

component属性包含包和 Activity 的名称以及 drawable是图标包中匹配图标的名称。循环遍历 XmlPullParser从上一步找到你想要的图标。

加载图标

只需获取要加载其图标的应用的组件名称

PackageManager.getLaunchIntentForPackage("app.package.name").getComponent().toString();

比用

加载图标
Resources.getIdentifier(componentName, "drawable", "app.package.name"); 
Resources.getDrawable(...)

关于android - 在我的应用程序中使用图标包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com