我需要在我的应用程序中调用一个网站,该网站无法通过Android随附的本地webview正确显示。
我已经在网上搜索了一些答案,但我确实在Is there an alternative to webview?旁边发现了很多。
如上文所述,我已经测试了人行横道。然而,人行横道有很多缺点:
所以,我实际上非常拼命地寻求替代方案,却找不到任何替代方案。
有人知道工作和生产准备好的webview吗?那会对我有所帮助。
编辑:
我必须添加webView.getSettings().setDomStorageEnabled(true);
才能使网站正常运行。
答案 0 :(得分:4)
适用于Android应用开发者的新Chrome custom tabs。
您可以通过在Android的WebView上构建自定义浏览体验来获得更精细的控制,但代价是更多的技术复杂性和用户不熟悉的浏览体验。 Chrome最新版本中的一项新功能自定义标签通过允许应用自定义Chrome的外观和感觉来实现这种权衡,从而快速无缝地实现从应用到网络内容的转换。
查找 Chrome自定义标签的Google代码示例为here
实施: -
答案 1 :(得分:2)
自定义标签是@pRaNaY提到的方式之一。这是一个快速实现:
private static final String EXTRA_CUSTOM_TABS_TOOLBAR_COLOR = "android.support.customtabs.extra.TOOLBAR_COLOR";
private static final String PACKAGE_NAME = "com.android.chrome";
private CustomTabsClient mClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
warmUpChrome();
launchUrl();
}
private void warmUpChrome() {
CustomTabsServiceConnection service = new CustomTabsServiceConnection() {
@Override
public void onCustomTabsServiceConnected(ComponentName name, CustomTabsClient client) {
mClient = client;
mClient.warmup(0);
}
@Override
public void onServiceDisconnected(ComponentName name) {
mClient = null;
}
};
CustomTabsClient.bindCustomTabsService(getApplicationContext(),PACKAGE_NAME, service);
}
private void launchUrl() {
Uri uri = getIntent().getData();
if (uri == null) {
return;
}
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.intent.setData(uri);
customTabsIntent.intent.putExtra(EXTRA_CUSTOM_TABS_TOOLBAR_COLOR, getResources().getColor(R.color.red));
PackageManager packageManager = getPackageManager();
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(customTabsIntent.intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resolveInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
if (TextUtils.equals(packageName, PACKAGE_NAME))
customTabsIntent.intent.setPackage(PACKAGE_NAME);
}
customTabsIntent.launchUrl(this, uri);
}
摇篮:
compile "com.android.support:customtabs:23.0.0"
附加说明:
尽早调用warmUpChrome将更快地切换到浏览器。示例中的实现与深层链接一起使用,但是如果要手动启动它,请重写launchUrl并将URI或String作为参数。代码主要是从其他stackoverflow应答器拼接在一起,但我已经改变了它的某些部分以适用于我的情况。