android - 打开最近在 android 中使用 Intent.ACTION_VIEW 创建的图像
问题描述
我有一个这样的任务,如果用户要下载图片,他会点击蓝色按钮,图片将被下载,并显示小吃店,如果用户点击小吃店的动作图像将打开
问题是当用户点击小吃店的动作时我看不到图像,只会显示一个黑屏,图像已创建,我可以用我的文件资源管理器和我的画廊看到它
这是我用来下载图像的代码
val picturesDirectory: File =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
try {
var localFile = File(picturesDirectory, "picture.jpg")
val out = FileOutputStream(localFile)
val bitmapDrawable = imageView.drawable as BitmapDrawable
bitmapDrawable.bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)
out.flush()
out.close()
}
context.sendBroadcast(
Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())
)
)
} catch (e: Exception) {
Log.d(TAG, "getPhotoFile: ${e.message}")
}
以及用于显示图像的部分
val picturesDirectory: File =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
val image = File(picturesDirectory,"picture.jpg")
val intent = Intent()
intent.action = Intent.ACTION_VIEW
intent.setDataAndType(Uri.fromFile(image), "image/*")
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
startActivity(intent)
正如我所说,图像已创建,路径相同但查看器无法显示,我尝试显示具有相同意图查看器代码的另一张图像,它正常显示,所以问题是它不能显示最近创建的图像。我也尝试使用 FileProvider,这不是安全或限制问题,因为我使用 SDK 21 测试应用程序有任何解决方案吗?更新:当我用文件资源管理器重命名图像时,它将正常显示
解决方案
我解决了,我必须添加
val contentUri = Uri.fromFile(photoFile)
val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
mediaScanIntent.data = contentUri
requireActivity().sendBroadcast(mediaScanIntent)
创建文件后
推荐阅读
- android - Fabric crashlytics 新实现不起作用 | 织物属性
- javascript - 登录codeigniter后如何设置cookies for remember me复选框?
- javascript - 使用 AJAX 发布和重定向后如何访问 PHP 变量?
- python - 如何规范化具有多个条件的 Pandas 数据列?
- algorithm - 给定 O(n) 个集合,找出其中不同的集合的复杂性是多少?
- python - Python:使用格式将大型文本文件转换为数据框
- javascript - HTML画布元素不显示图像
- r - 如何在 r 中通过 CATScore 提取顶级特征?
- google-apps-script - 是否有将谷歌文档转换为谷歌电子表格的功能?
- angular - 如何找到我的表单有一个真实状态的“必需”错误