Проблема с намерением обмена изображениями в Котлине - PullRequest
0 голосов
/ 08 ноября 2018

здесь я делюсь намерением изображения. Изображение находится в папке для рисования. Даю это excpetion. android.os.FileUriExposedException:

file:///storage/emulated/0/Android/data/com.example.arkkhano.myapplication/cache/myImage.png exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2356)

Код:

sharing_img.setOnClickListener {
    val myDrawable = tv_view_home2e.drawable
    val bitmap = (myDrawable as BitmapDrawable).bitmap
    val file = File(externalCacheDir,"myImage.png")
    val fOut = FileOutputStream(file)
    bitmap.compress(Bitmap.CompressFormat.PNG,90,fOut)
    fOut.flush()
    fOut.close()
    file.setReadable(true,false)
    val intent = Intent(Intent.ACTION_SEND)
    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
    intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file))
    intent.type = "image/png"
    intent.putExtra(Intent.EXTRA_SUBJECT,"Subject here")
    startActivity(Intent.createChooser(intent,"Share to "))
}

1 Ответ

0 голосов
/ 08 ноября 2018

Согласно документу Android, вы должны использовать FileProvider

https://developer.android.com/reference/android/support/v4/content/FileProvider

но когда я попробовал, он работает на одном устройстве и не работает на других устройствах.

Так что безопасный способ для меня - сначала экспортировать файл в какое-то внешнее хранилище (Environment.getExternalStorageDirectory) и делиться им с другими приложениями. Это работает для всех моих устройств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...