2017-02-21 34 views
3

我有带许可证的WebView屏幕。一切工作都很完美,直到用户通知我没有任何东西显示在Android 7+设备上。Android 7.0+上的WebView无法呈现页面

public class DefaultWebActivity extends AppCompatActivity { 

WebView mWebView; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.default_web); 
    mWebView = (WebView) findViewById(R.id.web_view); 
    mWebView.setWebChromeClient(new WebChromeClient()); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new WebViewClient() { 

     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      Log.w("WebActivity", "Error loading page " + description); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
      return true; 
     } 
    }); 
    mWebView.loadUrl("https://google.com/"); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mWebView.onPause(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    mWebView.onResume(); 
} 

}

我可以看到它加载的东西(谷歌URL出现在shouldOverrideUrlLoading方法),但它说明不了什么。 不显示错误日志。

此代码完美适用于< 7.0安卓版本的设备。 我已经读过Android 7+使用Chrome来渲染屏幕,但我没有从我不得不添加到修复问题。

提前致谢!

回答

11

从Android的文档

这是预安卓ň

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

这是由于Androidň

  • @return如果主机应用程序要离开当前的WebView真
    • and handle t他自己的url,否则返回false。
@Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     return true; 
    } 

这种方法是从Android的N,因此,对于这个原因,你只能在Android的N. 有这个问题返回FALSE你应该解决您的问题。

+0

谢谢,我误解了那些方法desciption。错误是正确的价值。 True表示该应用处理了网址 – Dmytro

+0

您好,先生,我已经使用Google像素。我面临同样的问题,并根据您的评论我已更新我的克罗姆应用程序,但仍然同样的问题面孔。请回复我任何其他解决方案。先谢谢你。 –

+0

这个改变对我有用 –