remove custom AndroidManifest.xml parsing and instead use PackageParser

This has the advantage, that AndroidManifest.xml is only parsed once.
This commit is contained in:
Julian Winkler
2024-06-10 23:24:29 +02:00
parent f249e1c487
commit b15bf203a7
8 changed files with 126 additions and 232 deletions

View File

@@ -1,24 +1,17 @@
package android.content;
import android.content.res.XmlResourceParser;
import android.content.pm.PackageParser;
public class ContentProvider {
static void createContentProviders() throws Exception {
XmlResourceParser parser = Context.this_application.getAssets().openXmlResourceParser("AndroidManifest.xml");
for (; parser.getEventType() != XmlResourceParser.END_DOCUMENT; parser.next()) {
if (parser.getEventType() != XmlResourceParser.START_TAG || !"provider".equals(parser.getName()))
continue;
String providerName = parser.getAttributeValue("http://schemas.android.com/apk/res/android", "name");
if (providerName.startsWith(".")) {
providerName = Context.this_application.getPackageName() + providerName;
}
for (PackageParser.Provider provider_parsed : Context.pkg.providers) {
String providerName = provider_parsed.className;
System.out.println("creating " + providerName);
Class<? extends ContentProvider> providerCls = Class.forName(providerName).asSubclass(ContentProvider.class);
ContentProvider provider = providerCls.getConstructor().newInstance();
provider.onCreate();
}
parser.close();
}
public boolean onCreate() {return false;}