paper_
paper_
  • 发布:2020-04-13 10:39
  • 更新:2022-01-20 23:35
  • 阅读:1227

使用nativejs刷新安卓Media Store

分类:Native.js

使用场景

当保存图片、音视频等至自定义目录(非系统相册)下时,系统相册中并不能立即看到,此时需要手动刷新Media Store

原理

发送 ACTION_MEDIA_SCANNER_SCAN_FILE 广播

此方法仅对单个文件有效,多个文件需要调用多次

安卓原生写法

val filename = "Your_Created_Image_File_Path"  
val contentUri = Uri.fromFile(File(filename))  
val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,contentUri)  
sendBroadcast(mediaScanIntent)

nativejs写法

function refreshMediaStore (filename) {  
    const File = plus.android.newObject('java.io.File', filename)  
    const Uri = plus.android.invoke('android.net.Uri', 'fromFile', File)  
    const Intent = plus.android.importClass('android.content.Intent')  
    const mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri)  
  
    const main = plus.android.runtimeMainActivity()  
    main.sendBroadcast(mediaScanIntent)  
}

注意

filename 应是以 Environment.getExternalStorageDirectory() 的返回值开头,也就是扩展卡的根路径

const Environment = plus.android.importClass('android.os.Environment')  
const root = plus.android.invoke(Environment.getExternalStorageDirectory(), 'getAbsolutePath')

参考

2 关注 分享
1***@qq.com 辣条人

要回复文章请先登录注册

辣条人

辣条人

有没有uniapp的,急需
2022-01-20 23:35
为什么不百度

为什么不百度

好兄弟
2021-08-17 11:08
paper_

paper_ (作者)

回复 y***@trans-cosmos.com.cn :
试了一下删除文件后,再针对该文件发送上面的广播,是可以刷新的...我这边可行 你试过删除后发送广播吗(原文是说不行...)
2020-07-20 11:00
paper_

paper_ (作者)

回复 y***@trans-cosmos.com.cn :
参考里3.3节有写删除刷新的方法...得研究下
2020-07-20 09:38
y***@trans-cosmos.com.cn

y***@trans-cosmos.com.cn

请问删除图片后,如何刷新相册呢
2020-07-15 19:42