Android 发送系统广播ACTION_MEDIA_SCANNER_SCAN_FILE更新相册无效

本文记录了在Android设备上将Bitmap保存为PNG后,仅在文件管理器可见而相册未显示的问题及解决方案。通过使用Uri.fromFile替代Uri.parse,并发送ACTION_MEDIA_SCANNER_SCAN_FILE广播,成功使相册识别新图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日常记录:

把bitmap以png保存到手机本地,然后在相册中查看没有显示,但是在文件管理中却可以看到,4.4之后android提供了专门的API通知系统刷新制定路径,但是这个路径必须是Environment.getExternalStorageDirectory().getAbsolutePath() 开头,在保存成功后使用ACTION_MEDIA_SCANNER_SCAN_FILE这个广播更新却发现相册中并没有,代码:

String path = "文件路径";
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.parse(path);
intent.setData(uri);
activity.sendBroadcast(intent);

然后上网搜了一下,看到很多人在传递Uri的时候是用的Uri.fromFile,然后就试了一下,发现成功了,具体原因暂没有研究,只是做一个记录,以下是修改过的代码:

String path = "文件路径";
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(path));
intent.setData(uri);
activity.sendBroadcast(intent);

后记:评论里大哥说使用 FileProvider.getUriForFile,因为我是在Android8上测试的没有问题,所以也没有改。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值