You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
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:
@@ -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;}
|
||||
|
||||
Reference in New Issue
Block a user