尝试在webview中打开网址时,Android 7.0会显示空白屏幕

时间:2017-01-02 11:13:11

标签: android webview android-7.0-nougat

我在Android 7.0(moto g4)中面临一个问题,我试图在网页视图中加载一个网址,但它显示一个空白的白色屏幕。它正在使用Android M及以下版本。

public class MainActivity extends Activity {

 private String webviewURL="http://henmilholidayhomesgoa.com/player2/documentation/EULA.html";


    private WebView wv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wv= (WebView) findViewById(R.id.webview);
        wv.getSettings().setTextZoom(60);
        wv.getSettings().setBuiltInZoomControls(true);
        wv.getSettings().setJavaScriptEnabled(true);
        wv.loadUrl(webviewURL);

    }

}

注意: - 代码中提到的网址不是我不能分享的实际网址:(。它是一个带https的网址。但是帖子中的给定网址实际上正在工作,请让我知道,如果有的话需要其他输入。谢谢提前

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
            <WebView
                android:id="@+id/webview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center" />
    </RelativeLayout>

4 个答案:

答案 0 :(得分:1)

试试这个示例代码:

在这里有一个webview和一个进度条。在这个代码中,一旦进度条消失就会加载url,如果url中有任何链接,它也会在webview中打开它。

以下是 java 代码:

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ShowWebView extends Activity {

    //private Button button;
    private WebView webView;
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_web_view);

        //Get webview 
        webView = (WebView) findViewById(R.id.webView1);

        startWebView("http://www.androidexample.com/media/webview/login.html");

    }

    private void startWebView(String url) {

        //Create new webview Client to show progress dialog
        //When opening a url or click on link

        webView.setWebViewClient(new WebViewClient() {      
            ProgressDialog progressDialog;

            //If you will not use this method url links are opeen in new brower not in webview
            public boolean shouldOverrideUrlLoading(WebView view, String url) {              
                view.loadUrl(url);
                return true;
            }

            //Show loader on url load
            public void onLoadResource (WebView view, String url) {
                if (progressDialog == null) {
                    // in standard case YourActivity.this
                    progressDialog = new ProgressDialog(ShowWebView.this);
                    progressDialog.setMessage("Loading...");
                    progressDialog.show();
                }
            }
            public void onPageFinished(WebView view, String url) {
                try{
                if (progressDialog.isShowing()) {
                    progressDialog.dismiss();
                    progressDialog = null;
                }
                }catch(Exception exception){
                    exception.printStackTrace();
                }
            }

        }); 

         // Javascript inabled on webview  
        webView.getSettings().setJavaScriptEnabled(true); 

        // Other webview options
        /*
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);
        webView.getSettings().setBuiltInZoomControls(true);
        */

        /*
         String summary = "<html><body>You scored <b>192</b> points.</body></html>";
         webview.loadData(summary, "text/html", null); 
         */

        //Load url in webview
        webView.loadUrl(url);


    }

    // Open previous opened link from history on webview when back button pressed

    @Override
    // Detect when the back button is pressed
    public void onBackPressed() {
        if(webView.canGoBack()) {
            webView.goBack();
        } else {
            // Let the system handle the back button
            super.onBackPressed();
        }
    }

}

现在,下面是相应的 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

   <WebView 
    android:id="@+id/webView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>       
</LinearLayout>

请在android 7.0中检查此代码。希望它可以帮助你!

答案 1 :(得分:1)

我复制了相同的代码并在nougat Nexus 9上运行应用程序。 加载URL需要一段时间等待5分钟,否则请与其他Nougat设备进行核对。

SELECT sup.qid,
       sup.title,
       SUBSTRING(sup.userid, 1, 1) AS t,
       CASE SUBSTRING(sup.userid, 1, 1)
         WHEN 's' THEN staff.name
         WHEN 'p' THEN users.name
         ELSE NULL
       END AS user_name
FROM   support_queries sub
LEFT OUTER JOIN users
             ON SUBSTRING(sup.userid, 2, LENGTH(sup.userid) - 1) = users.id
LEFT OUTER JOIN staff
             ON SUBSTRING(sup.userid, 2, LENGTH(sup.userid) - 1) = staff.id

See this image from Nexus 9

希望这有帮助。快乐编码。如果有帮助,请告诉我。

答案 2 :(得分:0)

我在华硕Nexus 7上遇到过类似问题.Webview浏览器版本为56,而Chrome浏览器应用程序版本较低。我更新了Google Chrome应用后,webview开始正常运行。

答案 3 :(得分:0)

您可以使用loadDataWithBaseURL而不是loadData,然后尝试在某些设备上遇到类似的问题。