From ab114245bd93706d219ad38658c76abf9451791b Mon Sep 17 00:00:00 2001 From: Mis012 Date: Sat, 9 Nov 2024 16:27:07 +0100 Subject: [PATCH] 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) --- .../android/content/ContentProvider.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/api-impl/android/content/ContentProvider.java b/src/api-impl/android/content/ContentProvider.java index c7633b73..49c7066c 100644 --- a/src/api-impl/android/content/ContentProvider.java +++ b/src/api-impl/android/content/ContentProvider.java @@ -14,15 +14,17 @@ public abstract class ContentProvider { static Map providers = new HashMap(); - static void createContentProviders() throws Exception { + static void createContentProviders() { for (PackageParser.Provider provider_parsed : Context.pkg.providers) { - String providerName = provider_parsed.className; - System.out.println("creating " + providerName); - Class providerCls = Class.forName(providerName).asSubclass(ContentProvider.class); - ContentProvider provider = providerCls.getConstructor().newInstance(); - provider.attachInfo(Context.this_application, provider_parsed.info); - provider.onCreate(); - providers.put(provider_parsed.info.authority, provider); + try { + String providerName = provider_parsed.className; + System.out.println("creating " + providerName); + Class providerCls = Class.forName(providerName).asSubclass(ContentProvider.class); + ContentProvider provider = providerCls.getConstructor().newInstance(); + provider.attachInfo(Context.this_application, provider_parsed.info); + provider.onCreate(); + providers.put(provider_parsed.info.authority, provider); + } catch(Exception e) { e.printStackTrace(); } } }