为了保持我的应用与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 上运行。
今天尝试在旧设备(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 上不存在该库,但我不想让两个版本的 APP 绝对有两个不同的清单文件。
可以有哪些解决方案?您可以手动添加库(andorid4 没有)吗?它与某些东西冲突吗?
否则我不明白输入代码的意义
(Build.VERSION.SDK_INT> = Build.VERSION_CODES.N
)
当我决定是使用fileprovider还是旧的intent类型时。
如果我的清单与 Build.VERSION_CODES.N ....之前的版本不兼容,则代码中的条件语句没有意义。
我该怎么解决?