2016-04-27 93 views
3

我在我的应用中使用Webview来显示带有Javascript的网站。我使用此代码:Webview未显示(仅适用于Android 6)

WebView webview = (WebView) findViewById(R.id.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) { 
    view.loadUrl(url); 
    return true; 
} 
@Override 
public void onPageFinished(WebView view, final String url) { 

} 
}); 
ConnectivityManager connMgr = (ConnectivityManager) 
      getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
if (networkInfo != null && networkInfo.isConnected()) { 
    webview.loadUrl("http://www.example.com"); 
} else { 
     summary = "<html><body>No internet connection!</body></html>"; 
     webview.loadData(summary, "text/html", null); 
} 

但不幸的是网页视图不与Android显示smarphones 6.(其他Android版本都工作正常) 在Android上6,这里是我的logcat: http://pastebin.com/fh1Aqp0x

一错误我不明白的是:

BindingManager的:不能调用determinedVisibility() - 从没见过的PID的连接:22202

做任何人知道解决办法?

+0

可能是您在Manifest中错过的权限,android 6对权限很敏感。 – Petro

回答

-1

我很幸运解决了我的问题。问题是由布局造成的。上级小部件具有前景色属性。对于大多数Android版本,它运行良好,但Android 6以不同的方式构建了布局。现在,当我改变了我的布局,它正常工作。

0

试试这个希望它有效。它适用于Android 6.0的我

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class Book extends AppCompatActivity { 

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

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_book); 
    //Get webview 
    webView = (WebView) findViewById(R.id.webView1); 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      webView.setWebViewClient(new myWebClient()); 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.loadUrl("file:///android_asset/pa.html"); 
     } 
    }); 
    } 
    class myWebClient extends WebViewClient 
    { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
    } 

    // 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(); 
    } 
} 
} 

希望这适用于你。如果有帮助,请接受答案。欢呼:)

0

使用新棉花糖设备检查Android System WebView的应用程序更新。 您的logcat第5行表示您的webview版本为44,当前值为49时,您的其他设备可能已有。

0

您可以创建一个WebViewActivity类

public class WebViewActivity extends AppCompatActivity { 

     private WebView mWebview; 
     private ProgressBar progressBar; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 

      setContentView(R.layout.layout_webview); 
      //pass url using intent; 
      String url = getIntent().getStringExtra("url");//it's get the url 

      mWebview = (WebView) findViewById(R.id.webView); 
      progressBar = (ProgressBar) findViewById(R.id.progressBarWebView); 

      mWebview.setVisibility(View.INVISIBLE); 

      mWebview.getSettings().setBuiltInZoomControls(true); // enable zoom in and out 
      mWebview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 

      mWebview.setWebViewClient(new WebViewClient() { 
       // 
       public boolean shuldOverrideKeyEvent(WebView view, KeyEvent event) { 
        // Do something with the event here 
        return true; 
       } 


       public void onPageFinished(WebView view, String url) { 
        progressBar.setVisibility(View.GONE); 
        mWebview.setVisibility(View.VISIBLE); 
       } 


       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        String hostName = Uri.parse(url).getHost(); 
        Log.v("Debug", "Inside override -- url host:" + hostName); 

        if (hostName.equals("https://example.com/risks")) { 
         // This is my web site, so do not override; let my WebView load the page 
         return false; 

        } 
        // reject anything other 
        progressBar.setVisibility(View.GONE); 
        mWebview.setVisibility(View.VISIBLE); 
        return true; 
       } 
      }); 

      mWebview.loadUrl(url); 

     } 


    } 

layout_webview.xml

<?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" 
    android:layout_gravity="center" 
    android:orientation="vertical"> 

    <ProgressBar 
     android:id="@+id/progressBarWebView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" /> 

    <WebView 
     android:id="@+id/webView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" /> 

</RelativeLayout> 

AndroidManifest.xml中不要忘了添加此权限

<uses-permission android:name="android.permission.INTERNET" />