在Kotlin的安卓工作室中共享图像文件。

huangapple go评论114阅读模式
英文:

shared image file in Kotlin android studio

问题

  1. val bitmap = (imageViewx1.drawable as BitmapDrawable).bitmap
  2. val nombreArchivo: String = "Shared.jpg"
  3. val patchload = getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString() + nombreArchivo
  4. val mifile2 = File(patchload)
  5. val stream: OutputStream = FileOutputStream(mifile2)
  6. bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream)
  7. stream.flush()
  8. stream.close()
  9. val shareIntent = Intent(Intent.ACTION_SEND)
  10. shareIntent.type = "image/jpg"
  11. val photoFile = File(filesDir, "PicturesShared.jpg")
  12. shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(photoFile))
  13. startActivity(Intent.createChooser(shareIntent, "Share image using"))
  1. Process: app.xxxx.appimage, PID: 21588
  2. android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/app.xxxx.appimage/files/PicturesShared.jpg expobeyond app through ClipData.Item.getUri()
  3. at android.os.StrictMode.onFileUriExposed(StrictMode.java:1967)
  4. at android.net.Uri.checkFileUriExposed(Uri.java:2364)
  5. at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941)
  6. at android.content.Intent.prepareToLeaveProcess(Intent.java:9747)
  7. at android.content.Intent.prepareToLeaveProcess(Intent.java:9753)
  8. at android.content.Intent.prepareToLeaveProcess(Intent.java:9732)
  9. at android.app.Instrumentation.execStartActivity(Instrumentation.java:1679)
  10. at android.app.Activity.startActivityForResult(Activity.java:4477)
  11. at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
  12. at android.app.Activity.startActivityForResult(Activity.java:4435)
  13. at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
  14. at android.app.Activity.startActivity(Activity.java:4800)
  15. at android.app.Activity.startActivity(Activity.java:4768)
  16. at app.xxxx.appimage.flip$onCreate$4.onClick(flip.kt:97)
  17. at android.view.View.performClick(View.java:6259)
  18. at android.view.View$PerformClick.run(View.java:24732)
  19. at android.os.Handler.handleCallback(Handler.java:789)
  20. at android.os.Handler.dispatchMessage(Handler.java:98)
  21. at android.os.Looper.loop(Looper.java:164)
  22. at android.app.ActivityThread.main(ActivityThread.java:6694)
  23. at java.lang.reflect.Method.invoke(Native Method)
  24. at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
  25. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
英文:

I have an application in which I try to share a photo, but when you share the application it crashes.

  1. val bitmap = (imageViewx1.drawable as BitmapDrawable).bitmap
  2. val nombreArchivo:String="Shared.jpg"
  3. val patchload= getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString() + nombreArchivo
  4. val mifile2 =File(patchload)
  5. val stream: OutputStream = FileOutputStream(mifile2)
  6. bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream)
  7. stream.flush()
  8. stream.close()
  9. val shareIntent = Intent(Intent.ACTION_SEND)
  10. shareIntent.type = "image/jpg"
  11. val photoFile = File(filesDir, "PicturesShared.jpg")
  12. Toast.makeText(this, photoFile.toString(), Toast.LENGTH_SHORT).show()
  13. shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(photoFile))
  14. startActivity(Intent.createChooser(shareIntent, "Share image using"))

log:

  1. Process: app.xxxx.appimage, PID: 21588
  2. android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/app.xxxx.appimage/files/PicturesShared.jpg expobeyond app through ClipData.Item.getUri()
  3. at android.os.StrictMode.onFileUriExposed(StrictMode.java:1967)
  4. at android.net.Uri.checkFileUriExposed(Uri.java:2364)
  5. at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941)
  6. at android.content.Intent.prepareToLeaveProcess(Intent.java:9747)
  7. at android.content.Intent.prepareToLeaveProcess(Intent.java:9753)
  8. at android.content.Intent.prepareToLeaveProcess(Intent.java:9732)
  9. at android.app.Instrumentation.execStartActivity(Instrumentation.java:1679)
  10. at android.app.Activity.startActivityForResult(Activity.java:4477)
  11. at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
  12. at android.app.Activity.startActivityForResult(Activity.java:4435)
  13. at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
  14. at android.app.Activity.startActivity(Activity.java:4800)
  15. at android.app.Activity.startActivity(Activity.java:4768)
  16. at app.xxxx.appimage.flip$onCreate$4.onClick(flip.kt:97)
  17. at android.view.View.performClick(View.java:6259)
  18. at android.view.View$PerformClick.run(View.java:24732)
  19. at android.os.Handler.handleCallback(Handler.java:789)
  20. at android.os.Handler.dispatchMessage(Handler.java:98)
  21. at android.os.Looper.loop(Looper.java:164)
  22. at android.app.ActivityThread.main(ActivityThread.java:6694)
  23. at java.lang.reflect.Method.invoke(Native Method)
  24. at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
  25. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)

答案1

得分: 1

抛出的异常是:

  1. android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/app.xxxx.appimage/files/PicturesShared.jpg expobeyond app 通过 ClipData.Item.getUri() 共享

FileUriExposedException 是由以下原因引起的:

> 当应用向另一个应用公开 file:// Uri 时抛出的异常。

当目标 API 版本为 24 或更高版本时,您需要使用 内容提供程序 来与另一个应用共享文件。

英文:

The exception raised is

  1. android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/app.xxxx.appimage/files/PicturesShared.jpg expobeyond app through ClipData.Item.getUri()

FileUriExposedException is caused by

> The exception that is thrown when an application exposes a file:// Uri
> to another app.

When targeting Api 24 or higher you need to use a content provider to share a file with another app.

huangapple
  • 本文由 发表于 2020年10月7日 18:58:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/64242642.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定