2017-02-21 71 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

這個改變對我有用 –