清单与fileprovider旧Android版本兼容

问题描述 投票:0回答:1

为了保持与Android 8我的应用我不得不添加的“提供者”的标签清单中的兼容性。这就是标签:

   <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="xxx.xxx.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
    </provider>

我已经实现了一切,一切工作在Android 7/8/9。

今天一试,安装APP的旧设备(安卓4.0),这是一个错误信息:

  java.lang.RuntimeException: **Unable to get provider android.support.v4.content.FileProvider**: 
java.lang.ClassNotFoundException: Didn't find class "**android.support.v4.content.FileProvider**" on path: 
DexPathList[[zip file "/data/app/mywork.activity-4.apk"],nativeLibraryDirectories=[/data/app-lib/mywork.activity-4, /vendor/lib, /system/lib]]

我明白,这个问题是由于这样的事实:在Android4不存在该库,但我不想让APP的两个版本绝对有两个不同的清单文件。

有什么解决办法哪有?您可以手动添加库(其中andorid4没有)?是否有什么冲突?

否则,我不明白输入代码的意义

(Build.VERSION.SDK_INT> = Build.VERSION_CODES.N

当我决定是否使用fileprovider或旧型意图的。

如果我有显明之前Build.VERSION_CODES.N是不兼容的版本....在代码的条件语句是没有意义的。

我怎么能解决?

android fileprovider
1个回答
0
投票

最有可能的targetApi应该工作:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="xxx.xxx.fileprovider"
    android:grantUriPermissions="true"
    android:exported="false"

    tools:targetApi="o">

    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />

</provider>
© www.soinside.com 2019 - 2024. All rights reserved.