Доброе утро всем. Мне нужно решить эту маленькую проблему, но я не понимаю, где я ошибаюсь. На практике я создаю папку внутри устройства, в которую я загружаю файл PDF, файл, который я могу открыть, чтобы прочитать его. Я также хотел бы поделиться файлом, используя приложения, предоставленные моим телефоном, а затем внешние приложения, используя FileProvider, однако я всегда получаю одну и ту же ошибку. Может кто-нибудь сказать мне, где я ошибаюсь?
Отображается сообщение об ошибке: java .lang.IllegalArgumentException: не удалось найти настроенный root, который содержит /data/data/com.example.myapp/app_DownloadedFiles /file.pdf на androidx.core.content.FileProvider $ SimplePathStrategy.getUriForFile (FileProvider. java: 744) на androidx.core.content.FileProvider.getUriForFile (FileProvider. java: 418)
Как создать dir: val testDir = MainActivity.applicationContext (). GetDir ("DownloadedFiles", Context.MODE_PRIVATE) testDir.mkdirs ()
AndroidManifest. xml:
<application
<provider
android:name=".FileProvider"
android:authorities="com.example.myapp"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
</application>
provider_paths. xml:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external"
path="." />
<external-files-path
name="external_files"
path="." />
<cache-path
name="cache"
path="." />
<external-cache-path
name="external_cache"
path="." />
<files-path
name="files"
path="." />
</paths>
MainActivityViewModel.kt
fun shareFile(get: MyFile) {
val uri = FileProvider.getUriForFile(
MainActivity.applicationContext(),
"com.example.myapp",
File(MainActivity.applicationContext()
.getDir("DownloadedFiles",
Context.MODE_PRIVATE),
get.title + ".pdf")
)
val myIntent = Intent(Intent.ACTION_VIEW)
myIntent.setDataAndType(uri, "application/pdf")
myIntent.flags = FLAG_GRANT_READ_URI_PERMISSION or FLAG_GRANT_WRITE_URI_PERMISSION
MainActivity.instanceMainActivity?.startActivity(myIntent)
}