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

Android 在我的应用程序中使用图标包,android,android-launcher,Android,Android Launcher,我的应用程序包括一项功能,用于列出用户设备上安装的所有应用程序,并带有图标。现在,用户在此列表中请求图标包支持 目前,我列出的已安装应用包括: final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List<ResolveInfo> rgRi = pm.queryIntentActivities(

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

目前,我列出的已安装应用包括:

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

final List<ResolveInfo> rgRi = pm.queryIntentActivities( mainIntent, 0);
这会给我应用程序的图标,但不是图标包,而是默认图标


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

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

安装图标包 查找带有意向过滤器
com.gau.go.launchex.theme
org.adw.launcher.THEMES
的应用程序。可能还有其他人。 使用例如

加载appfilter.xml 它可以作为资源或在图标包的资产文件夹中找到。使用其中一个

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

解析appfilter.xml
Appfilter.xml
描述图标包内容。除此之外,themer还具有在背景上绘制图标、提供遮罩等功能。XDA中对此进行了描述:。我们最感兴趣的是
标签,例如

<item component="ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}" drawable="com_android_browser_browseractivity" />
然后加载图标

Resources.getIdentifier(componentName, "drawable", "app.package.name"); 
Resources.getDrawable(...)

你能看看我的问题吗?根据你的解释,我试图找出如何加载图标包图标,但我无法让它工作。。。
InputStream s = iconPackres.getAssets().open("appfilter.xml");
XmlPullParserFactory f = XmlPullParserFactory.newInstance();
f.setNamespaceAware(true);
XmlPullParser p = f.newPullParser();
p.setInput(s, "utf-8");
<item component="ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}" drawable="com_android_browser_browseractivity" />
PackageManager.getLaunchIntentForPackage("app.package.name").getComponent().toString();
Resources.getIdentifier(componentName, "drawable", "app.package.name"); 
Resources.getDrawable(...)