ContentProvider: wrap in try/catch

Errors thrown here shouldn't be fatal, the app will often work just fine
without any ContentProviders (especially a mostly-native app probably
only uses them for ads)
This commit is contained in:
Mis012
2024-11-09 16:27:07 +01:00
parent da36ebea9a
commit ab114245bd

View File

@@ -14,15 +14,17 @@ public abstract class ContentProvider {
static Map<String, ContentProvider> providers = new HashMap<String, ContentProvider>(); static Map<String, ContentProvider> providers = new HashMap<String, ContentProvider>();
static void createContentProviders() throws Exception { static void createContentProviders() {
for (PackageParser.Provider provider_parsed : Context.pkg.providers) { for (PackageParser.Provider provider_parsed : Context.pkg.providers) {
String providerName = provider_parsed.className; try {
System.out.println("creating " + providerName); String providerName = provider_parsed.className;
Class<? extends ContentProvider> providerCls = Class.forName(providerName).asSubclass(ContentProvider.class); System.out.println("creating " + providerName);
ContentProvider provider = providerCls.getConstructor().newInstance(); Class<? extends ContentProvider> providerCls = Class.forName(providerName).asSubclass(ContentProvider.class);
provider.attachInfo(Context.this_application, provider_parsed.info); ContentProvider provider = providerCls.getConstructor().newInstance();
provider.onCreate(); provider.attachInfo(Context.this_application, provider_parsed.info);
providers.put(provider_parsed.info.authority, provider); provider.onCreate();
providers.put(provider_parsed.info.authority, provider);
} catch(Exception e) { e.printStackTrace(); }
} }
} }