我是靠谱客的博主 震动小蝴蝶,最近开发中收集的这篇文章主要介绍安卓sdcard写入文件需要重启才能生效的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

近日给公司产品(安卓系统)增加 拷贝otg U盘的音乐文件到设备内置sdcard的功能.拷贝成功后,通过媒体库无法正常找到.

问题现象

  • 使用context.getContentResolver().query  方法无法查询到新文件.
  • 通过USB数据线在电脑通过MTP协议查看sdcard目录也找不到文件.
  • 但是在adb shell命令查看目录文件存在
  • 且重启设备后.这些文件又存在.说明实际创建的文件是有了,只是因为某些原因导致没有同步到MTP文件系统和音频数据库中

尝试着创建文件后调用如下2个方法都无法:

1)ContentResolver.setMasterSyncAutomatically(true);

2)ContentResolver.requestSync(request);

通过百度和查看系统部分源码.发现通过流创建的文件. 并不会直接更新MTP数据库和媒体音频数据库.需要手动触发更新.

解决办法

综合了以下至少有2种方法:

方法1

调用MediaScannerConnection类扫描更新,可以指定MIME文件类型


//解决新建和复制的文件 需要重启才能看到
MediaScannerConnection.scanFile(context,
new String[]{Environment.getExternalStorageDirectory().toString()},
new String[]{"audio/*"},
new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String arg0, Uri arg1) {
setBroadcast(context,msg);
}
});

方法2

发送指定intent的系统广播.

 Uri data = Uri. parse("file:///sdcard/" +fName);
sendBroadcast( new
Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE , data));

 

最后

以上就是震动小蝴蝶为你收集整理的安卓sdcard写入文件需要重启才能生效的问题的全部内容,希望文章能够帮你解决安卓sdcard写入文件需要重启才能生效的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部