为了保持与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是不兼容的版本....在代码的条件语句是没有意义的。
我怎么能解决?
最有可能的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>