首页 > 解决方案 > WebView 中未加载某些 URL

问题描述

我正在尝试在 Activity 中的 android WebView 中加载 URL。我能够做到这一点,但该网站正在启动默认浏览器。我找到了 setWebViewClient 方法,它将网站保留在应用程序内部的 WebView 中,而不是启动默认浏览器。但是 - 这显示了一个空白页。我尝试了其他网站(http://www.google.comhttp://www.amazon.com等),这些工作......但是我试图加载的网站(https://mizaajindia .com/ ) 没有。

我已启用 javascript 以防万一 - 但无法理解为什么某些 URL 会加载而其他 URL 不会从应用程序的 WebView 中加载。你有什么想法吗?

非常感谢!

公共类 MainActivity1 扩展 AppCompatActivity {

private MainActivity1 activity;
private ProgressDialog progDailog;
private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    activity = this;

    progDailog = ProgressDialog.show(activity, "Loading", "Please wait...", true);
    progDailog.setCancelable(false);
    webView = (WebView) findViewById(R.id.wb_webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            progDailog.show();
            view.loadUrl(url);
            return false;
        }

        @Override
        public void onPageFinished(WebView view, final String url) {
            progDailog.dismiss();
        }
    });
    webView.loadUrl("https://mizaajindia.com/");
}

}

标签: android

解决方案


对于我的具体情况,我必须像@Aaryan Negi 所说的那样启用 dom 存储。这是因为该站点使用本地存储

更多信息可以在 stackoverflow 响应MDN 的 Web 存储 API 信息中找到

在片段中开始的 webview 的代码示例。


    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        _binding = FragmentGuestWebViewBinding.inflate(inflater, container, false)
        val view = binding.root
        
        //declare webview domStorage
        val myWebView: WebView = binding.webView

        //enable javascript and 
        myWebView.settings.javaScriptEnabled = true
        myWebView.settings.domStorageEnabled = true

        myWebView.loadUrl("https://mixerlogic.herokuapp.com")

        // Force links and redirects to open in the WebView instead of in a browser
        myWebView.webViewClient = WebViewClient()

        return view
    }

推荐阅读