![](/img/trans.png)
[英]Permission Denial: opening provider android.support.v4.content.FileProvider
[英]android.support.v4.content.FileProvider not found
我正在尝试升级一个正常工作的旧应用程序以支持 Android API 26,我需要使用的一件事是 android.support.v4.content.FileProvider - 但它没有找到。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
由于早期的 Android 构建,gradle 文件看起来很简单。 是否像添加依赖项一样简单? 我环顾四周,有人建议添加一个我不明白的 multidex。 任何帮助表示赞赏,谢谢!
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "virtualgs.spaint"
minSdkVersion 22
targetSdkVersion 26
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
从 AndroidX(重新打包的 Android 支持库)开始,路径为androidx.core.content.FileProvider
,因此更新后的提供程序标记为:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Android 支持库现在位于androidx.*
包层次结构中。
android.*
现在保留给内置的 Android 系统库。
代替
import android.support.v4.content.FileProvider;
尝试导入
import androidx.core.content.FileProvider;
使用以下命令解决了我的问题:
npm install jetifier --save
npx jetify
npx cap sync
我将其替换为较新的版本,即:androidx.core.content.FileProvider
这对我有用。
将compile 'com.android.support:support-v4:26.1.0'
添加到 app 模块中的build.gradle文件中。
改成
public class FileProvider extends androidx.core.content.FileProvider {
}
对于 androidx
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
创建你的班级
import android.support.v4.content.FileProvider;
public class GenericFileProvider extends FileProvider {
}
将此提供程序添加到您的 AndroidManifest.xml 应用程序标记下:
<provider
android:name=".utilities.GenericFileProvider"
android:authorities="${applicationId}.utilities.GenericFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
离子用户,
ionic cordova rm android
这样做,然后重建您的应用程序。
如果您遇到多个依赖项的问题,您可以将整个项目迁移到 Android X。
为此,请右键单击项目中的“app”文件夹,选择“Refactor”,然后选择“Migrate to Android X”。
这是一张照片:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.