我的应用程序使用Webview继续崩溃?

时间:2017-12-01 11:04:21

标签: android webview

我现在正在测试我的应用程序。但是,它会在加载屏幕上继续崩溃。加载后,如果他们已经登录,则会重定向到登录帐户或用户帐户。

但是,在构建应用程序时,我在android studio控制台日志中不断收到这些错误消息。

W/cr_CrashFileManager: /data/user/0/chrisbeckett.********/cache/WebView/Crash Reports does not exist or is not a directory

// I've put the stars as I can't show the name of the application yet. 
W/cr_AwContentsClient: Denied starting an intent without a user gesture, URI http://********.********.com/login

我目前的代码:

package chrisbeckett.**********;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;// Instance of WebChromeClient for handling all chrome functions.
    private volatile WebChromeClient mWebChromeClient;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.activity_main_webview);

        // Enable Javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setDomStorageEnabled(true);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
        webSettings.setAppCacheEnabled(true);
        webSettings.setAppCacheMaxSize(100 * 1000 * 1000);

        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.loadUrl("http://********.*********.com/loading");
    }

    /**
     * Set the WebChromeClient.
     * @param client An implementation of WebChromeClient.
     */
    public void setWebChromeClient(WebChromeClient client) {
        mWebChromeClient = client;
    }
}

更多信息:

我的代码适用于桌面上的所有Web浏览器,在检查器中以移动模式查看时,在将其放入App格式之前进行测试。

如果您需要更多信息,请告诉我们。

3 个答案:

答案 0 :(得分:4)

尝试以下可能有效的代码

mWebView.setWebViewClient(new WebViewClient() {

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

});

答案 1 :(得分:0)

您可以将其用于Android N

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @SuppressWarnings("deprecation")
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @TargetApi(Build.VERSION_CODES.N)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }
});

答案 2 :(得分:0)

 android:usesCleartextTraffic="true" in application tag

在manifest.xml文件的上方添加一行。