Prevent crash on devices with bad webview
This commit is contained in:
5 files changed
+37
No files matched your search
@@ -28,6 +28,7 @@ import com.hippo.ehviewer.client.EhCookieStore;
|
||||
import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.ui.SettingsActivity;
|
||||
import com.hippo.ehviewer.ui.scene.BaseScene;
|
||||
import com.hippo.util.WebViewUtil;
|
||||
|
||||
import okhttp3.HttpUrl;
|
||||
|
||||
@@ -58,6 +59,10 @@ public class SignInRequiredPreference extends Preference implements Preference.O
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
if (!WebViewUtil.available(getContext())) {
|
||||
mActivity.showTip(R.string.error_no_webview, BaseScene.LENGTH_SHORT);
|
||||
return true;
|
||||
}
|
||||
EhCookieStore store = EhApplication.getEhCookieStore(getContext());
|
||||
HttpUrl e = HttpUrl.get(EhUrl.HOST_E);
|
||||
HttpUrl ex = HttpUrl.get(EhUrl.HOST_EX);
|
||||
|
||||
@@ -45,6 +45,7 @@ import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.util.ExceptionUtils;
|
||||
import com.hippo.util.WebViewUtil;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.IntIdGenerator;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
@@ -225,6 +226,10 @@ public final class SignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
} else if (mSignIn == v) {
|
||||
signIn();
|
||||
} else if (mSignInViaWebView == v) {
|
||||
if (!WebViewUtil.available(getContext())) {
|
||||
showTip(R.string.error_no_webview, BaseScene.LENGTH_SHORT);
|
||||
return;
|
||||
}
|
||||
startScene(new Announcer(WebViewSignInScene.class).setRequestCode(this, REQUEST_CODE_WEBVIEW));
|
||||
} else if (mSignInViaCookies == v) {
|
||||
startScene(new Announcer(CookieSignInScene.class).setRequestCode(this, REQUEST_CODE_COOKIE));
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.hippo.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.webkit.WebViewCompat;
|
||||
|
||||
public class WebViewUtil {
|
||||
private static final String TAG = "WebViewUtil";
|
||||
|
||||
public static boolean available(Context context) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
return false;
|
||||
}
|
||||
PackageInfo webViewPackageInfo = WebViewCompat.getCurrentWebViewPackage(context);
|
||||
if (webViewPackageInfo == null) {
|
||||
Log.d(TAG, "WebView not available");
|
||||
return false;
|
||||
}
|
||||
Log.d(TAG, "WebView version: " + webViewPackageInfo.versionName);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user