android 文件更新操作
来源:互联网 发布:晋江广电网络 编辑:程序博客网 时间:2024/06/04 01:14
1. 发送 Intent.ACTION_MEDIA_SCANNER_SCAN_FILE 广播
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File("/sdcard/xxx/xxx.jpg")));)
2.使用 MediacannerConnection 进行扫描, 也是指定路径对其进行扫描
MediaScannerConnection msc = new MediaScannerConnection(context, new MediaScannerConnectionClient() {
MediaProvider 中的MediaScannerReceiver.java 对 接收广播后,中的路径信息有判断(其实是有问题的。 外置sd卡 扫描不到的哦文件)
public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Uri uri = intent.getData(); if (action.equals(Intent.ACTION_BOOT_COMPLETED)) { // scan internal storage scan(context, MediaProvider.INTERNAL_VOLUME); } else { if (uri.getScheme().equals("file")) { // handle intents related to external storage String path = uri.getPath(); String externalStoragePath = Environment.getExternalStorageDirectory().getPath(); Log.d(TAG, "action: " + action + " path: " + path); if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) { // scan whenever any volume is mounted scan(context, MediaProvider.EXTERNAL_VOLUME); } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) && path != null && path.startsWith(externalStoragePath + "/")) { scanFile(context, path); } } }}
稍微算正确点的,要修改 MediaProvider
public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Uri uri = intent.getData(); // String externalStoragePath = // Environment.getExternalStorageDirectory().getPath(); String externalSDStoragePath = Environment .getExternalSDStorageDirectory().getPath(); String externalUDiskStoragePath = Environment .getExternalUDiskStorageDirectory().getPath(); String externalExtSDStoragePath = Environment .getExternalExtSDStorageDirectory().getPath(); if (action.equals(Intent.ACTION_BOOT_COMPLETED)) { // scan internal storage scan(context, MediaProvider.INTERNAL_VOLUME); } else { if (uri.getScheme().equals("file")) { // handle intents related to external storage String path = uri.getPath(); if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) { if (externalSDStoragePath.equals(path)) scan(context, MediaProvider.EXTERNAL_VOLUME_SD); else if (externalUDiskStoragePath.equals(path)) scan(context, MediaProvider.EXTERNAL_VOLUME_UDISK); else if (externalExtSDStoragePath.equals(path)) scan(context, MediaProvider.EXTERNAL_VOLUME_EXTSD); else Slog.w(TAG, "unknown volume path " + path); } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) && path != null && (path.startsWith(externalSDStoragePath + "/") || path.startsWith(externalExtSDStoragePath + "/") || path .startsWith(externalUDiskStoragePath + "/"))) { // 在上面的条件多些判断, 不然的话。外置SD卡 可是不扫描的 scanFile(context, path); } } } }
这里需要说一些。 看了源码(MediaProvider), 在 开机时, 他会进行全盘的扫描,所以文件就全出来咯。。
1 0
- android 文件更新操作
- java文件操作 更新中
- iOS文件操作(更新中)
- 【Tech-Android-Other】android操作sdcard中的多媒体文件——音乐列表的更新
- VB文件操作-exe文件更新
- android 下载更新操作封装
- Android常用命令操作(继续更新)
- android 数据库更新操作步骤
- android操作sdcard中的多媒体文件——音乐列表的更新
- android操作sdcard中的多媒体文件——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- Android无法更新R文件
- fstream文件操作(更新中)
- dom4j对xml文件进行更新操作
- IOS-文件操作合集-待更新
- python操作文件 (持续更新)
- 初探STM32掉电复位PDR
- 在shell脚本中进行MAC地址的加减
- iOS 性能调优, 成为一名合格 iOS 程序员必须掌握的技能
- HBase RegionLoad获取Name乱码问题的源码分析与解决方式
- 冒泡排序
- android 文件更新操作
- mysql学习笔记之优化篇一
- angularjs
- JS bug列表
- Android知识大纲
- 欢迎使用CSDN-markdown编辑器
- Jmeter
- iOS应用程序执行的生命周期
- C语言:合并数组