【发布时间】:2017-10-10 13:29:59
【问题描述】:
有没有办法检查设备上的 webview 是否可用?
背景:
如果我将<uses-feature android:name="android.software.webview"/> 添加到清单中,Google Play 上支持的设备数量将从 12,000 多台下降到 6,000 台以下。所以我在这个功能中添加了android:required="false"。如果 webview 可用,网站应显示在应用程序内,否则将在默认浏览器中启动:
String mUrl = "http://www.example.com";
if (*** WHAT TO PUT HERE? ***) {
WebView webview = (WebView) findViewById(R.id.webView);
if (Build.VERSION.SDK_INT >= 24) {
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.toString());
return false;
}
});
} else {
webview.setWebViewClient(new WebViewClient() {
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
}
webview.loadUrl(mUrl);
} else {
Uri uri = Uri.parse(mUrl);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
编辑(为了清楚起见):<uses-permission android:name="android.permission.INTERNET" /> 是(并且一直是)清单的一部分。只是添加了<uses-feature android:name="android.software.webview" /> 导致支持的设备下降。
这里有人遇到同样的问题:https://issuetracker.google.com/issues/37035282 (很遗憾没有回答)
【问题讨论】: