Android webview 小部件卡在空白屏幕上

Android webview widget stuck on blank screen

我想使用网络视图将我的 VUE 应用程序放在 Android 应用程序上。为此,我找到了 this project on github 来查看 URL.

我已经在 HERE 上部署了我的 VUE 应用程序以使其可访问。

根据 Android 项目的文档,我修改了一些内容:

  1. 在第 24 行 MainActivity.java 上,我添加了我的 URL: mWebView.loadUrl("https://albert.suments.com/estelares");

  2. 在第 15 行 MyWebClient.java 上,我修改了主机名变量以防止它在浏览器上的该主机下打开 URLs:

hostname = "albert.suments.com";
Uri uri = Uri.parse(url);
if (url.startsWith("file:") || uri.getHost() != null && uri.getHost().endsWith(hostname)) {
    return false;
}

使用这些值,当我在设备上 运行 来自 Android Studio 的应用程序时,它会卡在空白屏幕上。

但是,如果我将值设置为:

mWebView.loadUrl("https://www.google.com");

hostname = "google.com";

它显示了正确嵌入 Widget 的网站。

  1. 有什么明显的我可能遗漏的吗?

更新-------------------------------- ------

这是 MyWebViewClient.java 的代码:

class MyWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        String hostname;

        // YOUR HOSTNAME
        hostname = "albert.suments.com";
        url = "https://albert.suments.com/estelares";
        Uri uri = Uri.parse(url);


        if (url.startsWith("file:") || uri.getHost() != null && uri.getHost().endsWith(hostname)) {
        /**
         * It works correctly when:
         *     hostname = "google.com";
         *     url = "https://www.google.com";
         * It gets stuck on blank screen when:
         *     hostname = "albert.suments.com";
         *     url = "https://albert.suments.com/estelares";
         */
            return false;
        }

        /**
         *
         * When this code executes, it opens a new tab on the browser and display the web correctly
         */
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        view.getContext().startActivity(intent);
        return true;

    }
}

这是 MainActivity 的代码:

public class MainActivity extends Activity {

    private WebView mWebView;

    @Override
    @SuppressLint("SetJavaScriptEnabled")
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = findViewById(R.id.activity_main_webview);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new MyWebViewClient());

        // REMOTE RESOURCE
        mWebView.loadUrl("https://albert.suments.com/estelares");
        // LOCAL RESOURCE
        //mWebView.loadUrl("file:///android_asset/index.html");
    }

    @Override
    public void onBackPressed() {
        if(mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

给你!!

添加这一行

webSettings.setDomStorageEnabled(true); 让我知道它是否对您有用,如果对您有用,请将此答案标记为正确谢谢!