Поэтому мой вопрос заключается в том, как мы можем сделать это возможным.
Я искал вопросы по SO с помощью следующего запроса.
Android 403: Ошибка: запрещенный агент пользователя
Нашел много принятых ответов, некоторые из которых содержат различные UserAgentString
Перепробовал все, но ни один из них не помог. Поскольку UserAgentString помогает не всегда.
Если вход осуществляется путем открытия нового окна, то это не работает. Несмотря на то, что мы определяем ту же строку UserAgentString с webview в обратном вызове onCreateWindow WebChromeClient.
Я также пробовал искать для альтернативы веб-просмотра, например CrossView и т. д., но они не поддерживаются последние 3 года.
Я не могу использовать пользовательские вкладки Chrome, поскольку могу' скрыть адресную строку на пользовательской вкладке Chrome.
Поэтому, пожалуйста, подскажите мне, действительно ли это возможно в веб-просмотре или есть ли альтернатива веб-просмотру < /code>.
РЕДАКТИРОВАТЬ – то, что я пробовал до сих пор.
Инициализация WebView в onCreate()
Код: Выделить всё
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportMultipleWindows(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36");
webView.getSettings().setGeolocationEnabled(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
webView.setWebChromeClient(new MyWebChromeClient());
enableHTML5AppCache(webView);
webView.loadUrl("https://www.makemytrip.com/");
Код: Выделить всё
private void enableHTML5AppCache(WebView mWebView) {
mWebView.getSettings().setDomStorageEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
mWebView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
// This next one is crazy. It's the DEFAULT location for your app's cache
// But it didn't work for me without this line
mWebView.getSettings().setAppCachePath("/data/data/" + getActivity().getPackageName() + "/cache");
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
}
private class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, android.os.Message resultMsg) {
WebView newWebView = new WebView(getActivity());
newWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
newWebView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36");
newWebView.getSettings().setLoadWithOverviewMode(true);
newWebView.getSettings().setAllowContentAccess(true);
newWebView.getSettings().setDatabaseEnabled(true);
newWebView.getSettings().setLoadsImagesAutomatically(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
newWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
enableHTML5AppCache(newWebView);
newWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onCloseWindow(WebView window) {
webView.removeView(window);
}
});
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
webView.removeView(window);
}
}
Подробнее здесь: https://stackoverflow.com/questions/458 ... id-webview
Мобильная версия