Внутреннее хранилище - IllegalArgumentException: не удалось найти настроенную root, содержащую ... / file.pdf - PullRequest
0 голосов
/ 22 января 2020

Доброе утро всем. Мне нужно решить эту маленькую проблему, но я не понимаю, где я ошибаюсь. На практике я создаю папку внутри устройства, в которую я загружаю файл 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)
       }
...