Android之扫描文件或文件夹
2016-01-13 09:22
393 查看
我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到。这是因为SD卡并没有重新挂载,图库也无法把这张图片加载进去,解决这个问题非常简单,只需要我们模拟一个广播,使SD卡重新挂载即可!
public static void sendBroadCaseRemountSDcard(Activity activity,String filepath) {
try{
if(filepath==null){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Intent mediaScanIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(Environment.getExternalStorageDirectory()); //指定SD卡路径
mediaScanIntent.setData(contentUri);
activity.sendBroadcast(mediaScanIntent);
}
else {
activity.sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
}
}
else{
Uri data = Uri.parse("file://"+filepath);
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data));
}
}
catch(Exception ex){
LogUtil.WriteError(ex);
Log.e("sendBroadCaseRemountSDcard",ex.getMessage());
ToastUtil.show(activity, "重新挂载SD卡失败,请重启手机查看图片");
}
}
扯淡,这根本没用,要重新加载,必须要扫描文件,要重新挂载文件夹,也是要递归扫描文件下的所有文件夹。
实现代码如下:
public static void sendBroadCaseRemountSDcard(Activity activity,String filepath) {
try{
if(filepath==null){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Intent mediaScanIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(Environment.getExternalStorageDirectory()); //指定SD卡路径
mediaScanIntent.setData(contentUri);
activity.sendBroadcast(mediaScanIntent);
}
else {
activity.sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
}
}
else{
Uri data = Uri.parse("file://"+filepath);
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data));
}
}
catch(Exception ex){
LogUtil.WriteError(ex);
Log.e("sendBroadCaseRemountSDcard",ex.getMessage());
ToastUtil.show(activity, "重新挂载SD卡失败,请重启手机查看图片");
}
}
扯淡,这根本没用,要重新加载,必须要扫描文件,要重新挂载文件夹,也是要递归扫描文件下的所有文件夹。
实现代码如下:
//扫描文件 public static void fileScan(Activity activity,String file){ Uri data = Uri.parse("file://"+file); activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data)); } //扫描文件夹 public static void folderScan(Activity activity,String path){ File file = new File(path); if(file.isDirectory()){ File[] array = file.listFiles(); for(int i=0;i<array.length;i++){ File f = array[i]; if(f.isFile()){//FILE TYPE String name = f.getName(); if(name.contains(".mp3")){ fileScan(activity,f.getAbsolutePath()); } } else {//FOLDER TYPE folderScan(activity,f.getAbsolutePath()); } } } }
相关文章推荐
- Android四大组件之 服务Service
- Android编程之listView中checkbox用法实例分析
- Android 仿QQ主界面 Fragment + FrameLayout
- 【Android的事件处理】-----基于监听的事件处理
- android 快速开发不可或缺的12个工具类
- Android 数据库插入数据总是失败的原因
- Android自定义ViewPager可控制是否滑动
- Android编程获取全局Context的方法
- 双击返回退出 android
- android 属性动画
- 关于android的2.2与4.4的文件读取的一点发现
- Android的AsyncTask类的解读
- windows下使用adb工具查看android程序cpu和内存消耗情况
- Android 中的消息传递,详解广播机制
- Ubuntu虚拟机编译Android6.0总结
- 整理了一个 android 上的波形图及柱状图绘制控件
- Android应用开发之Bird fly游戏制作(一)
- Android平台Thrift服务端开发总结
- 【Android】《第一行代码—Android》第九章总结
- Android 464XLAT