14
14
import android .os .StrictMode ;
15
15
import android .os .SystemClock ;
16
16
import android .text .TextUtils ;
17
+ import android .util .AndroidRuntimeException ;
17
18
import android .webkit .WebView ;
18
19
19
20
import com .android .volley .RequestQueue ;
@@ -574,7 +575,14 @@ public static String getLoginUrl(Blog blog) {
574
575
public static String getDefaultUserAgent () {
575
576
if (mDefaultUserAgent == null ) {
576
577
// TODO: use WebSettings.getDefaultUserAgent() after upgrade to API level 17+
577
- mDefaultUserAgent = new WebView (getContext ()).getSettings ().getUserAgentString ();
578
+ try {
579
+ // Catch AndroidRuntimeException that could be raised by the WebView() constructor.
580
+ // See https://github.com/wordpress-mobile/WordPress-Android/issues/3594
581
+ mDefaultUserAgent = new WebView (getContext ()).getSettings ().getUserAgentString ();
582
+ } catch (AndroidRuntimeException e ) {
583
+ // init with the empty string, it's a rare issue
584
+ mDefaultUserAgent = "" ;
585
+ }
578
586
}
579
587
return mDefaultUserAgent ;
580
588
}
@@ -592,8 +600,13 @@ public static String getDefaultUserAgent() {
592
600
private static String mUserAgent ;
593
601
public static String getUserAgent () {
594
602
if (mUserAgent == null ) {
595
- mUserAgent = getDefaultUserAgent () + " "
596
- + USER_AGENT_APPNAME + "/" + PackageUtils .getVersionName (getContext ());
603
+ String defaultUserAgent = getDefaultUserAgent ();
604
+ if (TextUtils .isEmpty (defaultUserAgent )) {
605
+ mUserAgent = USER_AGENT_APPNAME + "/" + PackageUtils .getVersionName (getContext ());
606
+ } else {
607
+ mUserAgent = defaultUserAgent + " " + USER_AGENT_APPNAME + "/"
608
+ + PackageUtils .getVersionName (getContext ());
609
+ }
597
610
}
598
611
return mUserAgent ;
599
612
}
0 commit comments