最近在做一个相册,所以各种设法,终于弄出了遍历SD卡或者手机自带内存中所有图片的方法
/**
* 获得手机中的图片 (调用下面的方法,传入SD卡的路径,如果想遍历手机内存的话那就把路径改成手机内存就行了)
* @param context
* @return
*/
public HashMap<String, ArrayList<String>> getAllPicture(){
String sdpath = Environment.getExternalStorageDirectory().toString()+"/";//自定义文件夹目录
File sdfile = new File(sdpath);
getAllFiles(contexts, sdfile);
return hashMap;
}
/**
* 传入路径,获得所有文件 (这个就是循环遍历SD卡中的所有文件,如果是图片的话那就保存的一个hashmap 中,键值是图片的路径)
* @param filepath
* @throws MalformedURLException
*/
private void getAllFiles(Context context, File file){
listsdAllPic = new ArrayList<String>();
File files[] = file.listFiles();
if(files != null && files.length != 0){
for(File f:files){
if(f.isDirectory() && f != null){
if(listsdAllPic.size() != 0){
hashMap.put(picPath, listsdAllPic);
picPath = null;
}
getAllFiles(context,f);
}else if(sDandPhone.JudgeImageForm(context, f.getPath())){
picPath = sDandPhone.getPicturePath(f.getPath().toString());
listsdAllPic.add(f.getPath().toString());
}
}
}
}
/**
* 判断所搜索到的文件是否为图片格式(判断是否是图片,如果想找音频的话那就把文件后缀改成音频的格式就行了)
* @param mysdlist 文件名字
* @return
*/
static boolean imageForm;
public boolean JudgeImageForm(Context context, String mysdlist) {
String filename = mysdlist.substring(mysdlist.lastIndexOf(".") + 1,mysdlist.length()).toLowerCase();// 截取文件名字的后缀并转化为小写
if (filename.equals("jpg") || filename.equals("png")|| filename.equals("gif") || filename.equals("jpeg")|| filename.equals("bmp")) {
imageForm = true;
} else {
imageForm = false;
}
return imageForm;
}