Android之扫描文件或文件夹

我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到。这是因为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 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());
                }
            }
        }
    }  
时间: 2024-10-22 12:53:00

Android之扫描文件或文件夹的相关文章

Android学习笔记之Drawable 文件夹

PS:最近闲着无聊..模仿去写个QQapp..效果还不错..并且从中又学习到了一些相关的东西,在这里进行一些相关总结.. 学习内容: Android 中 Drawable 文件夹内部相关属性..     Android项目的项目结构我们算是再熟悉不过了..但是仅仅知道有什么结构远远是不够的,能够熟练的去运用其中的内部属性才是重要的..项目结构就不得不说一下Drawable文件中的相关属性了..言归正传..首先说一下anim.. 1.anim.xml   anim.xml..通过这个xml文件,我

Android中项目中各个文件夹的含义和用途详解

1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片.音乐.字体等. 4.res:可以存放项目中所有的资源文件,例如:图片(*.png.*.jpg).文本等. 5.res/drawable-hdpi:保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型. 6.res/drawable-ldpi:保存低分辩率图

SQL扫描并执行文件夹里的sql脚本

原文:SQL扫描并执行文件夹里的sql脚本 场景:项目数据库操作全部使用存储过程实现.每天都会有很多存储过程更新/增加,人工对测试环境中存储过程更新,会有一定概率出现遗漏,也麻烦!所以,需要一个工具将文件夹中所有存         储过程执行一次.实现:首先想到的是用c#,很简单,而且功能强大.        但是,我想尝试一下使用sql实现同样的功能,然后就发现了xp_cmdshell这个强大而又危险的东西!查询分析器执行,无需传入数据库用户名.密码,传入目录,就会按照脚本文件名排      

Android应用程序相关的文件文件夹具体解释

一.方法介绍:         每一个Android应用程序都能够通过Context来获取与应用程序相关的文件夹,这些文件夹的功能各异,每一个文件夹都有自己的特点.有时候可能会搞混淆,本文结合android源代码凝视和实际操作.具体介绍一下每一个方法: 方法:getFilesDir 释义:返回通过Context.openFileOutput()创建和存储的文件系统的绝对路径,应用程序文件,这些文件会在程序被卸载的时候所有删掉. 方法:getCacheDir 释义:返回应用程序指定的缓存文件夹,这

Android中主要资源文件及文件夹介绍

在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的 1:assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件.2:res文件夹里面的多个文件夹的各自介绍 res/anim/ XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象 res/drawable/ .png..9.png..jpg文件,

Android:创建文件或文件夹以及获取sd卡根目录

目录结构: 功能,可以根据录入的目录或者文件夹生成相应的文件或者文件夹 首先需要添加一个权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> MainActivity.java: package com.wyl.xml; import com.wyl.download.FileUtils; import android.app.Activity; import andr

Android 编程之入门开发文件夹管理器开发文件事件操作-2

上一篇博客,我们已经得到了文件夹列表,我们需要对文件列表子项添加事件,比如我们点击的是文件,就执行 打开操作,点击的是文件夹执行打开文件夹操作,遍历文件清单,以此类推直到最后一个是文件位置,关于文件 与文件夹的处理后面会讲到 在我的程序里,我写了一个类,对文件进行处理,FileOpreationUitl: package com.example.util; import java.io.File; import java.io.FileInputStream; import java.io.Fi

Android开发:扫描本地音乐文件

一.前言 本来觉得so easy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了. 本想实现的功能是: 通过网易云音乐/百度音乐/QQ音乐/酷狗音乐中一个API,通过关键词/歌手/歌词来搜索相关歌曲信息,然后在线播放.下载到本地,不过目前来看,使用API还是有一点问题.通过浏览器访问,问题不大,例如下图: 但是想通过手机访问的时候,问题就出现了,同样的参数,结果很不一样,而且基本搜不到自己想要的,后来换做通过自己的服务器去访问,还是搜不到,后来查了一下资料,暂时也没解决.于是,目前就

Android 编程之入门开发文件夹管理器开发详细讲解-1

在我们的手持设备中,一般都会自带设备公司自己开发的文件管理系统.拍照系统之类的东东,今天我给大伙说说入门级开发的文件夹管理器,代码贼少 总共就6个类吧,没有夹杂其他外部应用,就是一个纯文件夹管理器 APP主要功能设计:文件复制.文件夹复制.批量文件/文件夹复制.删除文件.删除文件夹.批量删除文件/文件夹.文件分类.文件搜索暂时没有写, 有兴趣的可以自己写写 APP主要应用:DrawerLayout .ListView.Fragment.IO.序列化.文件过滤.文件排序.ActionBar.Ada

android开发环境之SDK文件夹下的所需内容

下面SDK的内容可以到网址 https://www.androiddevtools.cn/下载相应包 注意:下载包的版本要一致,不然会出错 Sdk至少包含如下文件: add-ones夹可以为空: build-tools文件夹里要有东西,比如本人下的是: platforms文件夹要有内容,比如本人下的是: platform-tools文件夹要有内容,如下: sources文件夹里也有东西,比如自己下的: system-images文件夹有东西这些是CPU/ABI镜像文件,比如: tools文件夹就