Отказ в разрешении: чтение android .support.v4.content.FileProvider uri ANDROID pie - PullRequest
0 голосов
/ 26 января 2020

Я не могу поделиться изображением на экране, он хорошо работает в старых версиях, он просто не работает на android p ie Я получаю эту ошибку, кто-то может мне помочь?

ошибка

java.lang.SecurityException: Permission Denial: reading android.support.v4.content.FileProvider uri content://myapp.com.provider/external/screenshot.png from pid=29478, uid=1000 requires the provider be exported, or grantUriPermission()

код

  fun shareIt(imagePath: File? = this.imagePath) {

        val uri = FileProvider.getUriForFile(context!!, BuildConfig.APPLICATION_ID+ ".provider", imagePath!!)

        val sharingIntent = Intent(Intent.ACTION_SEND)
        sharingIntent.type = "image/*"
        val shareBody = "APP"
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app share")
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody)
        sharingIntent.putExtra(Intent.EXTRA_STREAM, uri)

        startActivity(Intent.createChooser(sharingIntent, "SHARE VIA"))
    }

код манифеста

  <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/paths" />
        </provider>

код пути:

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

кто-нибудь знает, что мне делать Для решения этой проблемы? любая помощь приветствуется.

1 Ответ

0 голосов
/ 26 января 2020

Это похоже на сообщение об ошибке:

  • вам нужно будет либо установить android:exported="true" (который выставит его), либо
  • , которое вы должны будете использовать метод grantUriPermission() для него (который предоставляет доступ).

Предлагается переход с устаревшего android.support.v4.content.FileProvider на androidx.core.content.FileProvider.

...