找不到android.support.v4.content.FileProvider

时间:2018-01-31 04:04:41

标签: java android android-fileprovider

我正在尝试升级一个有效的旧应用程序来支持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'
        }
    }
}

8 个答案:

答案 0 :(得分:30)

代替

import android.support.v4.content.FileProvider;

尝试导入

import androidx.core.content.FileProvider;

答案 1 :(得分:25)

从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系统库。

答案 2 :(得分:8)

我将其替换为较新的版本,即androidx.core.content.FileProvider

这对我有用。

答案 3 :(得分:5)

更改为

public class FileProvider extends androidx.core.content.FileProvider {
}

答案 4 :(得分:4)

对于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>

答案 5 :(得分:3)

compile 'com.android.support:support-v4:26.1.0'添加到a​​pp模块中的 build.gradle 文件。

答案 6 :(得分:3)

使用以下命令解决了我的问题:

npm install jetifier --save
npx jetify
npx cap sync

答案 7 :(得分:1)

创建班级

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>