【问题标题】:How to use chrome custom tabs below api 16?如何使用 api 16 以下的 chrome 自定义标签?
【发布时间】:2016-01-08 17:20:46
【问题描述】:

我想使用低于 api 16 的 chrome 自定义标签。我的应用支持 Min SDK 版本高达 10(GingerBread)。当我在 build.gradle 中声明 customtabs 依赖项时

它给出了以下错误:

错误:任务 ':app:processDebugManifest' 执行失败。 清单合并失败:uses-sdk:minSdkVersion 10 不能小于库 [com.android.support:customtabs:23.0.1] 中声明的版本 15 建议:使用 tools:overrideLibrary="android.support.customtabs" 强制使用

如何实现一种机制来支持使用低于 api 16 和默认浏览器的 SDK 和高于 api 16 和 customtabs 的设备。

【问题讨论】:

    标签: android google-chrome chrome-custom-tabs


    【解决方案1】:

    tools:overrideLibrary 标记 (see here)

    一个特殊标记,只能与 uses-sdk 声明一起使用,以覆盖导入最低 SDK 版本比该应用程序的最低 SDK 版本更新的库。 如果没有这样的标记,清单合并将失败。该标记将允许用户选择可以导入哪些库而忽略最低 SDK 版本。

    例如,在主要的 android 清单中:

    <uses-sdk android:targetSdkVersion="14" android:minSdkVersion="2"
    
              tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
    

    将允许导入具有以下清单的库而不会出错:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    
            package="com.example.lib1">
            <uses-sdk android:minSdkVersion="4" />
        </manifest>
    

    【讨论】:

    • chrome自定义标签的包名是:android.support.customtabs
    • 您问题中的相关 sdk 版本,当您的应用在 android 版本为 10 到 15 的设备上运行时,它会崩溃……您必须按照 andreban 的建议在运行时检查
    【解决方案2】:

    如错误中所述,您可以使用 tools:overrideLibrary 标记覆盖库中的 minSdk 版本。

    在调用库之前,请务必检查您的代码中的SDK_INT > ICE_CREAM_SANDWICH_MR1,以避免在运行时出现异常。

    当使用不支持自定义标签的系统时,只需触发一个普通的 ACTION_VIEW 意图。

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多