问题描述
我需要在我的应用程序中调用一个网站,该网站无法通过Android附带的本机webview正确显示。
我已经在网上搜索了一些答案,但我确实发现了很多这方面 。
正如上面的帖子所示,我已经测试了人行横道。 然而,人行横道有很多缺点:
- 非常不稳定和不完整
- 方式太大(包括人行横道将至少50 MB炸毁你的apk)
- 恕我直言,生产准备就绪
所以,我实际上非常拼命地寻求替代方案但却找不到任何方法。
有人知道工作和生产准备好的webview吗? 那会对我有所帮助。
编辑:
我不得不添加webView.getSettings().setDomStorageEnabled(true);
使网站工作。
1楼
适用于Android应用开发者的全新 。
您可以通过在Android的WebView上构建自定义浏览体验来获得更精细的控制,但代价是更多的技术复杂性和用户不熟悉的浏览体验。 Chrome最新版本中的一项新功能称为自定义标签 ,可让应用自定义Chrome的外观和感受,从而快速无缝地实现从应用到网络内容的转换,从而解决了这一问题。
查找Chrome的自定义选项卡谷歌代码示例是
实施 : -
请查看
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应答器拼接在一起,但我已经改变了它的一些部分以适用于我的情况。