有没有一种方法可以检查设备上是否可用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 (不幸的是没有得到答复)
PackageManager.FEATURE_WEBVIEW
代替硬编码字符串。 - Jacob Ras