can';在android存储上找不到图片

can';在android存储上找不到图片,android,file,Android,File,我有一个在手机上查找图片的代码。它适用于三星galaxy标签,但不适用于htc wildfire public class MyStorage extends Activity{ public static boolean mExternalStorageAvailable; public static boolean mExternalStorageWriteable; public static void checkAvailability(){ //Checking media

我有一个在手机上查找图片的代码。它适用于三星galaxy标签,但不适用于htc wildfire

public class MyStorage extends Activity{

public static boolean mExternalStorageAvailable;
public static boolean mExternalStorageWriteable;

public static void checkAvailability(){
    //Checking media availability
    String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state)) {
        // We can read and write the media
        mExternalStorageAvailable = mExternalStorageWriteable = true;
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        // We can only read the media
        mExternalStorageAvailable = true;
        mExternalStorageWriteable = false;
    } else {
        // Something else is wrong. It may be one of many other states, but all we need
        //  to know is we can neither read nor write
        mExternalStorageAvailable = mExternalStorageWriteable = false;
    }
}

public static ArrayList<String> getFiles(){
    checkAvailability();
    ArrayList<String> result = new ArrayList<String>();
    if(mExternalStorageAvailable){
        File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        String basePath = folder.toString();
        result = listDirectory(folder, basePath);
    }
    return result;
}

private static ArrayList<String> listDirectory(File folder, String basePath){
    String[] list = folder.list();
    ArrayList<String> result = new ArrayList<String>();
    if(list != null){
        for (int i = 0; i < list.length; i++) {
            File test = new File(basePath+"/"+list[i]);
            if(test.isDirectory()){
                result.addAll(listDirectory(test,basePath+"/"+list[i]));
            }else{
                result.add(basePath+"/"+list[i]);
            }
        }
    }
    return result;
}
}
公共类MyStorage扩展活动{
公共静态布尔值mExternalStorageAvailable;
公共静态布尔值mExternalStorageWriteable;
公共静态无效检查可用性(){
//检查媒体可用性
String state=Environment.getExternalStorageState();
if(环境、介质、安装等于(状态)){
//我们可以读写媒体
mExternalStorageAvailable=mExternalStorageWriteable=true;
}else if(Environment.MEDIA\u MOUNTED\u READ\u ONLY.equals(state)){
//我们只能阅读媒体
mExternalStorageAvailable=true;
mExternalStorageWriteable=false;
}否则{
//还有一些问题。它可能是许多其他州中的一个,但我们所需要的就是它
//要知道,我们既不会读也不会写
mExternalStorageAvailable=mExternalStorageWriteable=false;
}
}
公共静态ArrayList getFiles(){
检查可用性();
ArrayList结果=新建ArrayList();
如果(mExternalStorageAvailable){
File folder=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u图片);
字符串basePath=folder.toString();
结果=列表目录(文件夹,基本路径);
}
返回结果;
}
私有静态ArrayList listDirectory(文件文件夹,字符串基路径){
String[]list=文件夹.list();
ArrayList结果=新建ArrayList();
如果(列表!=null){
for(int i=0;i
唯一的区别是

在我的平板电脑中,图片位于/图片中,在我的手机中,它们位于/图片中


谢谢你的帮助

那是因为在HTC Wildfire上

"/Images" != Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
通常,为了获得图像,您最好使用ContentProvider:

诸如此类:

ContentResolver cr = mContext.getContentResolver();
Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);

您是否已添加读取sd卡的权限

但在代码中,请检查文件:

if(Folder.equal(“/pictures”)){ ... } else如果{Folder.equal(“/Images”)){ ... }