2017-02-21 52 views
3

У меня есть экран WebView с лицензией. И все отлично работало, пока пользователи не сообщили мне, что ничего не отображается на устройствах Android 7+.WebView на Android 7.0+ не отображает страницу

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

}

Я могу видеть, что он загружает что-то (Google URL появляется в методе shouldOverrideUrlLoading), но ничего не показывает. Не отображаются журналы ошибок.

Этот код отлично работает на < 7.0 устройствах для Android. Я читал, что Android 7+ использует Chrome для рендеринга экрана, но я не использовал то, что мне нужно добавить, чтобы исправить проблему.

Заранее благодарен!

ответ

11

Из Android док

Это предварительно Android N

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

Это так Android N

  • @return Правда, если хост-приложение хочет оставить текущее WebView
    • и обрабатывать t он ссылается на себя, в противном случае возвращает false.
@Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     return true; 
    } 

Этот метод из Android N, так что по этой причине вы имеете этот вопрос только в Android N. Возвратившись ложь, вы должны решить вашу проблему.

+0

Спасибо, я неправильно понимаю эти методы описания. False - правильное значение. True означает, что приложение обработано url – Dmytro

+0

Привет, сэр, у меня есть пиксель Google. У меня проблема с той же проблемой, и по вашему комментарию у меня есть обновление моего приложения crome, но все еще такое же лицо проблемы. Пожалуйста, ответьте мне на любое другое решение. заранее спасибо. –

+0

это изменение работа для меня –