当前位置: 代码迷 >> Android >> Android WebView的替代品
  详细解决方案

Android WebView的替代品

热度:350   发布时间:2023-08-04 11:00:43.0

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

我已经在网上搜索了一些答案,但我确实发现了很多这方面

正如上面的帖子所示,我已经测试了人行横道。 然而,人行横道有很多缺点:

  1. 非常不稳定和不完整
  2. 方式太大(包括人行横道将至少50 MB炸毁你的apk)
  3. 恕我直言,生产准备就绪

所以,我实际上非常拼命地寻求替代方案但却找不到任何方法。

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

编辑:

我不得不添加webView.getSettings().setDomStorageEnabled(true); 使网站工作。

适用于Android应用开发者的全新 。

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

查找Chrome的自定义选项卡谷歌代码示例是

实施 : -

请查看

自定义标签是@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应答器拼接在一起,但我已经改变了它的一些部分以适用于我的情况。

  相关解决方案