- Forum-Beiträge: 206
02.06.2015, 19:49:47 via Website
02.06.2015 19:49:47 via Website
Hallo,
ich möchte in meiner Anwendung die Nutzung von Icon-Packs (Apex/Go-Launcher etc.) möglich machen.
Dazu verwende ich folgenden Code:
public HashMap loadIconPack(String packPkg) {
try {
Resources r = getPackageManager().getResourcesForApplication(packPkg);
int i = r.getIdentifier("appfilter", "xml", packPkg);
XmlResourceParser p = r.getXml(i);
HashMap<String, Integer> map = new HashMap<>();
int eventType;
while((eventType = p.next()) != XmlResourceParser.END_DOCUMENT) {
switch(eventType) {
case XmlResourceParser.START_TAG:
String tag = p.getName();
if(tag.equals("item")) {
try {
String component = p.getAttributeValue(null, "component");
String drawable = p.getAttributeValue(null, "drawable");
String appPkg = component.substring(component.indexOf("{") + 1, component.lastIndexOf("}")).split("/")[0];
i = r.getIdentifier(drawable, "drawable", packPkg);
map.put(appPkg, i);
}catch(Throwable t) {
t.printStackTrace();
}
}
break;
}
}
return map.size() == 0 ? null : map;
}catch(Throwable t) {
t.printStackTrace();
return null;
}
}
Für die meisten Apps funktioniert dieser Code, doch bei manchen wird beim Laden des identifiers (siehe markierte Zeile) nur 0 zurückgegeben.
Bei dem Icon-Pack "Gel" z. B. funktioniert dieser Code für Chrome, den Google Play Store und bei einigen anderen Apps nicht.
Was habe ich falsch gemacht?
LG
— geändert am 02.06.2015, 19:53:06
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.