[英]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.