android - 使用与旧 Android 版本兼容的文件提供程序 list

标签 android fileprovider

为了保持我的应用程序与 Android 8 的兼容性,我必须在 list 中添加“provider”标签。这是标签:

   <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 上运行

今天尝试在旧设备(ANDROID 4)上安装 APP,这是一条错误消息:

  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 上不存在该库但我不想让两个版本的应用程序绝对有两个不同的 list 文件。

有哪些解决方案?您可以手动添加库(andorid4 没有)吗?它是否与某些东西冲突?

不然我不明白输入代码的意义

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

当我决定是使用 fileprovider 还是旧类型的 intent 时。

如果我的 list 与 Build.VERSION_CODES.N 之前的版本不兼容....代码中的条件语句没有意义。

我该如何解决?

最佳答案

很可能 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>

关于android - 使用与旧 Android 版本兼容的文件提供程序 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598792/

相关文章:

java - 如何创建内容提供程序以通过隐式 Intent 与另一个应用程序共享 PDF 文件?

android - 警告 : [XmlResourcesTransformer] No mapping for: android/support/FILE_PROVIDER_PATHS

android - ionic 构建Android在Ubuntu上抛出 `Could not resolve com.android.tools.build:gradle:2.1.0`

java - 我在 android apk 中执行命令,但我无法获得正确的返回

android - 无法在 Android 中使用 Aquery 获取 JsonObject 值

java - 使用加密文件并为它们提供 FileProvider

swift - 如何将文件提供程序添加到 MacOS Swift 应用程序?

php - Android:通过 HttpResponse 从 PHP 服务器获取文件

java - 为什么我的用户名没有出现在 TextView 中?

android - java.lang.SecurityException : Permission Denial: opening provider com. estrongs.android.pop.app.FileContentProvider 问题