与旧Android版本兼容的文件提供程序的清单



为了保持我的应用程序与Android 8的兼容性,我不得不在清单中添加"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上运行。

今天尝试在旧设备上安装应用程序(ANDROID4),这是一条错误消息:

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

有什么解决方案?你能手动添加库(andorid4没有)吗?它和什么有冲突吗?

否则,我不理解进入代码的感觉

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

当我决定是使用文件提供程序还是旧类型的意图时。

如果我有与Build之前的版本不兼容的清单。版本代码。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>

相关内容

  • 没有找到相关文章

最新更新