package com.tencent.bugly.crashreport; import android.annotation.SuppressLint; import android.content.Context; import android.os.Build; import android.util.Log; import android.webkit.WebSettings; import android.webkit.WebView; import com.tencent.bugly.BuglyStrategy; import com.tencent.bugly.CrashModule; import com.tencent.bugly.b; import com.tencent.bugly.crashreport.common.strategy.StrategyBean; import com.tencent.bugly.crashreport.crash.BuglyBroadcastReceiver; import com.tencent.bugly.crashreport.crash.c; import com.tencent.bugly.crashreport.crash.d; import com.tencent.bugly.crashreport.crash.h5.H5JavaScriptInterface; import com.tencent.bugly.crashreport.crash.jni.NativeCrashHandler; import com.tencent.bugly.proguard.q; import com.tencent.bugly.proguard.w; import com.tencent.bugly.proguard.x; import com.tencent.bugly.proguard.z; import com.ubt.jimu.diy.model.CategoryModel; import java.net.InetAddress; import java.net.Proxy; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /* compiled from: BUGLY */ /* loaded from: classes.dex */ public class CrashReport { private static Context a; /* compiled from: BUGLY */ public static class CrashHandleCallback extends BuglyStrategy.a { } /* compiled from: BUGLY */ public static class UserStrategy extends BuglyStrategy { private CrashHandleCallback a; public UserStrategy(Context context) { } public synchronized void setCrashHandleCallback(CrashHandleCallback crashHandleCallback) { this.a = crashHandleCallback; } @Override // com.tencent.bugly.BuglyStrategy public synchronized CrashHandleCallback getCrashHandleCallback() { return this.a; } } /* compiled from: BUGLY */ public interface WebViewInterface { void addJavascriptInterface(H5JavaScriptInterface h5JavaScriptInterface, String str); CharSequence getContentDescription(); String getUrl(); void loadUrl(String str); void setJavaScriptEnabled(boolean z); } public static void closeBugly() { if (!b.a) { Log.w(x.a, "Can not close bugly because bugly is disable."); return; } if (!CrashModule.getInstance().hasInitialized()) { Log.w(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return; } if (a == null) { return; } BuglyBroadcastReceiver buglyBroadcastReceiver = BuglyBroadcastReceiver.getInstance(); if (buglyBroadcastReceiver != null) { buglyBroadcastReceiver.unregister(a); } closeCrashReport(); com.tencent.bugly.crashreport.biz.b.a(a); w a2 = w.a(); if (a2 != null) { a2.b(); } } public static void closeCrashReport() { if (!b.a) { Log.w(x.a, "Can not close crash report because bugly is disable."); } else if (CrashModule.getInstance().hasInitialized()) { c.a().d(); } else { Log.w(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } } public static void closeNativeReport() { if (!b.a) { Log.w(x.a, "Can not close native report because bugly is disable."); } else if (CrashModule.getInstance().hasInitialized()) { c.a().f(); } else { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } } public static void enableBugly(boolean z) { b.a = z; } public static void enableObtainId(Context context, boolean z) { if (!b.a) { Log.w(x.a, "Can not set DB name because bugly is disable."); return; } if (context == null) { Log.w(x.a, "enableObtainId args context should not be null"); return; } Log.i(x.a, "Enable identification obtaining? " + z); com.tencent.bugly.crashreport.common.info.a.a(context).b(z); } public static Set getAllUserDataKeys(Context context) { if (!b.a) { Log.w(x.a, "Can not get all keys of user data because bugly is disable."); return new HashSet(); } if (context != null) { return com.tencent.bugly.crashreport.common.info.a.a(context).E(); } Log.e(x.a, "getAllUserDataKeys args context should not be null"); return new HashSet(); } public static String getAppChannel() { if (!b.a) { Log.w(x.a, "Can not get App channel because bugly is disable."); return CategoryModel.unknown; } if (CrashModule.getInstance().hasInitialized()) { return com.tencent.bugly.crashreport.common.info.a.a(a).l; } Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return CategoryModel.unknown; } public static String getAppID() { if (!b.a) { Log.w(x.a, "Can not get App ID because bugly is disable."); return CategoryModel.unknown; } if (CrashModule.getInstance().hasInitialized()) { return com.tencent.bugly.crashreport.common.info.a.a(a).f(); } Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return CategoryModel.unknown; } public static String getAppVer() { if (!b.a) { Log.w(x.a, "Can not get app version because bugly is disable."); return CategoryModel.unknown; } if (CrashModule.getInstance().hasInitialized()) { return com.tencent.bugly.crashreport.common.info.a.a(a).j; } Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return CategoryModel.unknown; } public static String getBuglyVersion(Context context) { if (context == null) { x.d("Please call with context.", new Object[0]); return CategoryModel.unknown; } com.tencent.bugly.crashreport.common.info.a.a(context); return com.tencent.bugly.crashreport.common.info.a.c(); } public static Proxy getHttpProxy() { return com.tencent.bugly.proguard.a.b(); } public static Map getSdkExtraData() { if (!b.a) { Log.w(x.a, "Can not get SDK extra data because bugly is disable."); return new HashMap(); } if (CrashModule.getInstance().hasInitialized()) { return com.tencent.bugly.crashreport.common.info.a.a(a).A; } Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return null; } public static String getUserData(Context context, String str) { if (!b.a) { Log.w(x.a, "Can not get user data because bugly is disable."); return CategoryModel.unknown; } if (context == null) { Log.e(x.a, "getUserDataValue args context should not be null"); return CategoryModel.unknown; } if (z.a(str)) { return null; } return com.tencent.bugly.crashreport.common.info.a.a(context).g(str); } public static int getUserDatasSize(Context context) { if (!b.a) { Log.w(x.a, "Can not get size of user data because bugly is disable."); return -1; } if (context != null) { return com.tencent.bugly.crashreport.common.info.a.a(context).D(); } Log.e(x.a, "getUserDatasSize args context should not be null"); return -1; } public static String getUserId() { if (!b.a) { Log.w(x.a, "Can not get user ID because bugly is disable."); return CategoryModel.unknown; } if (CrashModule.getInstance().hasInitialized()) { return com.tencent.bugly.crashreport.common.info.a.a(a).g(); } Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return CategoryModel.unknown; } public static int getUserSceneTagId(Context context) { if (!b.a) { Log.w(x.a, "Can not get user scene tag because bugly is disable."); return -1; } if (context != null) { return com.tencent.bugly.crashreport.common.info.a.a(context).H(); } Log.e(x.a, "getUserSceneTagId args context should not be null"); return -1; } public static void initCrashReport(Context context) { a = context; b.a(CrashModule.getInstance()); b.a(context); } public static boolean isLastSessionCrash() { if (!b.a) { Log.w(x.a, "The info 'isLastSessionCrash' is not accurate because bugly is disable."); return false; } if (CrashModule.getInstance().hasInitialized()) { return c.a().b(); } Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return false; } public static void postCatchedException(Throwable th) { postCatchedException(th, Thread.currentThread(), false); } public static void postException(Thread thread, int i, String str, String str2, String str3, Map map) { if (!b.a) { Log.w(x.a, "Can not post crash caught because bugly is disable."); } else if (CrashModule.getInstance().hasInitialized()) { d.a(thread, i, str, str2, str3, map); } else { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } } private static void putSdkData(Context context, String str, String str2) { if (context == null || z.a(str) || z.a(str2)) { return; } String replace = str.replace("[a-zA-Z[0-9]]+", ""); if (replace.length() > 100) { Log.w(x.a, String.format("putSdkData key length over limit %d, will be cutted.", 50)); replace = replace.substring(0, 50); } if (str2.length() > 500) { Log.w(x.a, String.format("putSdkData value length over limit %d, will be cutted!", 200)); str2 = str2.substring(0, 200); } com.tencent.bugly.crashreport.common.info.a.a(context).c(replace, str2); x.b(String.format("[param] putSdkData data: %s - %s", replace, str2), new Object[0]); } public static void putUserData(Context context, String str, String str2) { if (!b.a) { Log.w(x.a, "Can not put user data because bugly is disable."); return; } if (context == null) { Log.w(x.a, "putUserData args context should not be null"); return; } if (str == null) { String str3 = str; x.d("putUserData args key should not be null or empty", new Object[0]); return; } if (str2 == null) { String str4 = str2; x.d("putUserData args value should not be null", new Object[0]); return; } if (!str.matches("[a-zA-Z[0-9]]+")) { x.d("putUserData args key should match [a-zA-Z[0-9]]+ {" + str + "}", new Object[0]); return; } if (str2.length() > 200) { x.d("user data value length over limit %d, it will be cutted!", 200); str2 = str2.substring(0, 200); } com.tencent.bugly.crashreport.common.info.a a2 = com.tencent.bugly.crashreport.common.info.a.a(context); if (a2.E().contains(str)) { NativeCrashHandler nativeCrashHandler = NativeCrashHandler.getInstance(); if (nativeCrashHandler != null) { nativeCrashHandler.putKeyValueToNative(str, str2); } com.tencent.bugly.crashreport.common.info.a.a(context).b(str, str2); x.c("replace KV %s %s", str, str2); return; } if (a2.D() >= 10) { x.d("user data size is over limit %d, it will be cutted!", 10); return; } if (str.length() > 50) { x.d("user data key length over limit %d , will drop this new key %s", 50, str); str = str.substring(0, 50); } NativeCrashHandler nativeCrashHandler2 = NativeCrashHandler.getInstance(); if (nativeCrashHandler2 != null) { nativeCrashHandler2.putKeyValueToNative(str, str2); } com.tencent.bugly.crashreport.common.info.a.a(context).b(str, str2); x.b("[param] set user data: %s - %s", str, str2); } public static String removeUserData(Context context, String str) { if (!b.a) { Log.w(x.a, "Can not remove user data because bugly is disable."); return CategoryModel.unknown; } if (context == null) { Log.e(x.a, "removeUserData args context should not be null"); return CategoryModel.unknown; } if (z.a(str)) { return null; } x.b("[param] remove user data: %s", str); return com.tencent.bugly.crashreport.common.info.a.a(context).f(str); } public static void setAppChannel(Context context, String str) { if (!b.a) { Log.w(x.a, "Can not set App channel because Bugly is disable."); return; } if (context == null) { Log.w(x.a, "setAppChannel args context should not be null"); return; } if (str == null) { Log.w(x.a, "App channel is null, will not set"); return; } com.tencent.bugly.crashreport.common.info.a.a(context).l = str; NativeCrashHandler nativeCrashHandler = NativeCrashHandler.getInstance(); if (nativeCrashHandler != null) { nativeCrashHandler.setNativeAppChannel(str); } } public static void setAppPackage(Context context, String str) { if (!b.a) { Log.w(x.a, "Can not set App package because bugly is disable."); return; } if (context == null) { Log.w(x.a, "setAppPackage args context should not be null"); return; } if (str == null) { Log.w(x.a, "App package is null, will not set"); return; } com.tencent.bugly.crashreport.common.info.a.a(context).c = str; NativeCrashHandler nativeCrashHandler = NativeCrashHandler.getInstance(); if (nativeCrashHandler != null) { nativeCrashHandler.setNativeAppPackage(str); } } public static void setAppVersion(Context context, String str) { if (!b.a) { Log.w(x.a, "Can not set App version because bugly is disable."); return; } if (context == null) { Log.w(x.a, "setAppVersion args context should not be null"); return; } if (str == null) { Log.w(x.a, "App version is null, will not set"); return; } com.tencent.bugly.crashreport.common.info.a.a(context).j = str; NativeCrashHandler nativeCrashHandler = NativeCrashHandler.getInstance(); if (nativeCrashHandler != null) { nativeCrashHandler.setNativeAppVersion(str); } } public static void setAuditEnable(Context context, boolean z) { if (!b.a) { Log.w(x.a, "Can not set App package because bugly is disable."); return; } if (context == null) { Log.w(x.a, "setAppPackage args context should not be null"); return; } Log.i(x.a, "Set audit enable: " + z); com.tencent.bugly.crashreport.common.info.a.a(context).B = z; } public static void setBuglyDbName(String str) { if (!b.a) { Log.w(x.a, "Can not set DB name because bugly is disable."); return; } Log.i(x.a, "Set Bugly DB name: " + str); q.a = str; } public static void setContext(Context context) { a = context; } public static void setCrashFilter(String str) { if (!b.a) { Log.w(x.a, "Can not set App package because bugly is disable."); return; } Log.i(x.a, "Set crash stack filter: " + str); c.n = str; } public static void setCrashRegularFilter(String str) { if (!b.a) { Log.w(x.a, "Can not set App package because bugly is disable."); return; } Log.i(x.a, "Set crash stack filter: " + str); c.o = str; } public static void setHandleNativeCrashInJava(boolean z) { if (!b.a) { Log.w(x.a, "Can not set App package because bugly is disable."); return; } Log.i(x.a, "Should handle native crash in Java profile after handled in native profile: " + z); NativeCrashHandler.setShouldHandleInJava(z); } public static void setHttpProxy(String str, int i) { com.tencent.bugly.proguard.a.a(str, i); } public static void setIsAppForeground(Context context, boolean z) { if (!b.a) { Log.w(x.a, "Can not set 'isAppForeground' because bugly is disable."); return; } if (context == null) { x.d("Context should not be null.", new Object[0]); return; } if (z) { x.c("App is in foreground.", new Object[0]); } else { x.c("App is in background.", new Object[0]); } com.tencent.bugly.crashreport.common.info.a.a(context).a(z); } public static void setIsDevelopmentDevice(Context context, boolean z) { if (!b.a) { Log.w(x.a, "Can not set 'isDevelopmentDevice' because bugly is disable."); return; } if (context == null) { x.d("Context should not be null.", new Object[0]); return; } if (z) { x.c("This is a development device.", new Object[0]); } else { x.c("This is not a development device.", new Object[0]); } com.tencent.bugly.crashreport.common.info.a.a(context).y = z; } public static boolean setJavascriptMonitor(WebView webView, boolean z) { return setJavascriptMonitor(webView, z, false); } public static void setSdkExtraData(Context context, String str, String str2) { if (!b.a) { Log.w(x.a, "Can not put SDK extra data because bugly is disable."); } else { if (context == null || z.a(str) || z.a(str2)) { return; } com.tencent.bugly.crashreport.common.info.a.a(context).a(str, str2); } } public static void setServerUrl(String str) { if (z.a(str) || !z.c(str)) { Log.i(x.a, "URL is invalid."); return; } com.tencent.bugly.crashreport.common.strategy.a.a(str); StrategyBean.b = str; StrategyBean.c = str; } public static void setSessionIntervalMills(long j) { if (b.a) { com.tencent.bugly.crashreport.biz.b.a(j); } else { Log.w(x.a, "Can not set 'SessionIntervalMills' because bugly is disable."); } } public static void setUserId(String str) { if (!b.a) { Log.w(x.a, "Can not set user ID because bugly is disable."); } else if (CrashModule.getInstance().hasInitialized()) { setUserId(a, str); } else { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } } public static void setUserSceneTag(Context context, int i) { if (!b.a) { Log.w(x.a, "Can not set tag caught because bugly is disable."); return; } if (context == null) { Log.e(x.a, "setTag args context should not be null"); return; } if (i <= 0) { x.d("setTag args tagId should > 0", new Object[0]); } com.tencent.bugly.crashreport.common.info.a.a(context).a(i); x.b("[param] set user scene tag: %d", Integer.valueOf(i)); } public static void startCrashReport() { if (!b.a) { Log.w(x.a, "Can not start crash report because bugly is disable."); } else if (CrashModule.getInstance().hasInitialized()) { c.a().c(); } else { Log.w(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } } public static void testANRCrash() { if (!b.a) { Log.w(x.a, "Can not test ANR crash because bugly is disable."); } else if (!CrashModule.getInstance().hasInitialized()) { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } else { x.a("start to create a anr crash for test!", new Object[0]); c.a().j(); } } public static void testJavaCrash() { if (!b.a) { Log.w(x.a, "Can not test Java crash because bugly is disable."); } else { if (!CrashModule.getInstance().hasInitialized()) { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return; } com.tencent.bugly.crashreport.common.info.a b = com.tencent.bugly.crashreport.common.info.a.b(); if (b != null) { b.b(24096); } throw new RuntimeException("This Crash create for Test! You can go to Bugly see more detail!"); } } public static void testNativeCrash() { testNativeCrash(false, false, false); } public static void postCatchedException(Throwable th, Thread thread) { postCatchedException(th, thread, false); } public static void setHttpProxy(InetAddress inetAddress, int i) { com.tencent.bugly.proguard.a.a(inetAddress, i); } @SuppressLint({"SetJavaScriptEnabled"}) public static boolean setJavascriptMonitor(final WebView webView, boolean z, boolean z2) { if (webView != null) { return setJavascriptMonitor(new WebViewInterface() { // from class: com.tencent.bugly.crashreport.CrashReport.1 @Override // com.tencent.bugly.crashreport.CrashReport.WebViewInterface public final void addJavascriptInterface(H5JavaScriptInterface h5JavaScriptInterface, String str) { webView.addJavascriptInterface(h5JavaScriptInterface, str); } @Override // com.tencent.bugly.crashreport.CrashReport.WebViewInterface public final CharSequence getContentDescription() { return webView.getContentDescription(); } @Override // com.tencent.bugly.crashreport.CrashReport.WebViewInterface public final String getUrl() { return webView.getUrl(); } @Override // com.tencent.bugly.crashreport.CrashReport.WebViewInterface public final void loadUrl(String str) { webView.loadUrl(str); } @Override // com.tencent.bugly.crashreport.CrashReport.WebViewInterface public final void setJavaScriptEnabled(boolean z3) { WebSettings settings = webView.getSettings(); if (settings.getJavaScriptEnabled()) { return; } settings.setJavaScriptEnabled(true); } }, z, z2); } Log.w(x.a, "WebView is null."); return false; } public static void testNativeCrash(boolean z, boolean z2, boolean z3) { if (!b.a) { Log.w(x.a, "Can not test native crash because bugly is disable."); } else if (!CrashModule.getInstance().hasInitialized()) { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); } else { x.a("start to create a native crash for test!", new Object[0]); c.a().a(z, z2, z3); } } public static void postCatchedException(Throwable th, Thread thread, boolean z) { if (!b.a) { Log.w(x.a, "Can not post crash caught because bugly is disable."); return; } if (!CrashModule.getInstance().hasInitialized()) { Log.e(x.a, "CrashReport has not been initialed! pls to call method 'initCrashReport' first!"); return; } if (th == null) { x.d("throwable is null, just return", new Object[0]); return; } if (thread == null) { thread = Thread.currentThread(); } c.a().a(thread, th, false, (String) null, (byte[]) null, z); } public static void initCrashReport(Context context, UserStrategy userStrategy) { a = context; b.a(CrashModule.getInstance()); b.a(context, userStrategy); } public static boolean setJavascriptMonitor(WebViewInterface webViewInterface, boolean z) { return setJavascriptMonitor(webViewInterface, z, false); } public static void postException(int i, String str, String str2, String str3, Map map) { postException(Thread.currentThread(), i, str, str2, str3, map); } @SuppressLint({"SetJavaScriptEnabled"}) public static boolean setJavascriptMonitor(WebViewInterface webViewInterface, boolean z, boolean z2) { if (webViewInterface == null) { Log.w(x.a, "WebViewInterface is null."); return false; } if (!CrashModule.getInstance().hasInitialized()) { x.e("CrashReport has not been initialed! please to call method 'initCrashReport' first!", new Object[0]); return false; } x.a("Set Javascript exception monitor of webview.", new Object[0]); if (!b.a) { Log.w(x.a, "Can not set JavaScript monitor because bugly is disable."); return false; } x.c("URL of webview is %s", webViewInterface.getUrl()); if (!z2 && Build.VERSION.SDK_INT < 19) { x.e("This interface is only available for Android 4.4 or later.", new Object[0]); return false; } x.a("Enable the javascript needed by webview monitor.", new Object[0]); webViewInterface.setJavaScriptEnabled(true); H5JavaScriptInterface h5JavaScriptInterface = H5JavaScriptInterface.getInstance(webViewInterface); if (h5JavaScriptInterface != null) { x.a("Add a secure javascript interface to the webview.", new Object[0]); webViewInterface.addJavascriptInterface(h5JavaScriptInterface, "exceptionUploader"); } if (z) { x.a("Inject bugly.js(v%s) to the webview.", com.tencent.bugly.crashreport.crash.h5.b.b()); String a2 = com.tencent.bugly.crashreport.crash.h5.b.a(); if (a2 == null) { x.e("Failed to inject Bugly.js.", com.tencent.bugly.crashreport.crash.h5.b.b()); return false; } webViewInterface.loadUrl("javascript:" + a2); } return true; } public static void setUserId(Context context, String str) { if (!b.a) { Log.w(x.a, "Can not set user ID because bugly is disable."); return; } if (context == null) { Log.e(x.a, "Context should not be null when bugly has not been initialed!"); return; } if (str == null) { x.d("userId should not be null", new Object[0]); return; } if (str.length() > 100) { String substring = str.substring(0, 100); x.d("userId %s length is over limit %d substring to %s", str, 100, substring); str = substring; } if (str.equals(com.tencent.bugly.crashreport.common.info.a.a(context).g())) { return; } com.tencent.bugly.crashreport.common.info.a.a(context).b(str); x.b("[user] set userId : %s", str); NativeCrashHandler nativeCrashHandler = NativeCrashHandler.getInstance(); if (nativeCrashHandler != null) { nativeCrashHandler.setNativeUserId(str); } if (CrashModule.getInstance().hasInitialized()) { com.tencent.bugly.crashreport.biz.b.a(); } } public static Map getSdkExtraData(Context context) { if (!b.a) { Log.w(x.a, "Can not get SDK extra data because bugly is disable."); return new HashMap(); } if (context == null) { x.d("Context should not be null.", new Object[0]); return null; } return com.tencent.bugly.crashreport.common.info.a.a(context).A; } public static void initCrashReport(Context context, String str, boolean z) { if (context != null) { a = context; b.a(CrashModule.getInstance()); b.a(context, str, z, null); } } public static void initCrashReport(Context context, String str, boolean z, UserStrategy userStrategy) { if (context == null) { return; } a = context; b.a(CrashModule.getInstance()); b.a(context, str, z, userStrategy); } }