Android WebView的替代品

时间:2015-10-22 09:40:12

标签: android webview

我需要在我的应用程序中调用一个网站,该网站无法通过Android随附的本地webview正确显示。

我已经在网上搜索了一些答案,但我确实在Is there an alternative to webview?旁边发现了很多。

如上文所述,我已经测试了人行横道。然而,人行横道有很多缺点:

  1. 非常不稳定且不完整
  2. 方式太大(包括人行横道会让你至少50 MB爆炸)
  3. 恕我直言,生产准备就绪。
  4. 所以,我实际上非常拼命地寻求替代方案,却找不到任何替代方案。

    有人知道工作和生产准备好的webview吗?那会对我有所帮助。

    编辑:

    我必须添加webView.getSettings().setDomStorageEnabled(true);才能使网站正常运行。

2 个答案:

答案 0 :(得分:4)

适用于Android应用开发者的新Chrome custom tabs

  

您可以通过在Android的WebView上构建自定义浏览体验来获得更精细的控制,但代价是更多的技术复杂性和用户不熟悉的浏览体验。 Chrome最新版本中的一项新功能自定义标签通过允许应用自定义Chrome的外观和感觉来实现这种权衡,从而快速无缝地实现从应用到网络内容的转换。

查找 Chrome自定义标签的Google代码示例为here

实施: -

请检查Implementation guide for Chrome custom tabs

enter image description 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应答器拼接在一起,但我已经改变了它的某些部分以适用于我的情况。