java - 应用程序找不到 SD 卡内的图像目录

标签 java android

大家好,我正在创建一个应用程序,它将在 gridview 中显示图像,但问题是该应用程序无法找到 SD 卡内图像的目录。

这是相应的代码。

public class Utils {

private Context _context;

public Utils(Context context) {
    this._context = context;
}

public ArrayList<String> getFilePaths() {
    ArrayList<String> filePaths = new ArrayList<String>();

    File directory = new File(android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator
                                + AppConstant.PHOTO_ALBUM);

    if(directory.isDirectory()) {
        File[] listFiles = directory.listFiles();

    if(listFiles.length > 0) {

        for(int i = 0; i < listFiles.length; i++) {

            String filePath = listFiles[i].getAbsolutePath();

            if(IsSupportedFile(filePath)) {
                filePaths.add(filePath);
            }

            }

        }
    else {
        Toast.makeText(_context, AppConstant.PHOTO_ALBUM + "is empty. Please load some images", Toast.LENGTH_LONG).show();
        }
    }
    else {
        AlertDialog.Builder alert = new AlertDialog.Builder(_context);
        alert.setTitle("Error!");
        alert.setMessage(AppConstant.PHOTO_ALBUM + " directory path is not valid!");
        alert.setPositiveButton("OK", null);
        alert.show();
    }
    return filePaths;
}

private boolean IsSupportedFile(String filePath) {
    String ext = filePath.substring((filePath.lastIndexOf(".") + 1), filePath.length());

    if(AppConstant.FILE_EXTENSION.contains(ext.toLowerCase(Locale.getDefault()))) 
        return true;
    else
        return false;
}

public int getScreenWidth() {
    int columnWidth;

    WindowManager wm = (WindowManager) _context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();

    final Point point = new Point();
    try {
        display.getSize(point);
    } catch(java.lang.NoSuchMethodError ignore) {
        point.x = display.getWidth();
        point.y = display.getHeight();
    }

    columnWidth = point.x;
    return columnWidth;
}

希望你能帮助我解决这些问题。我不知道如何通过使用该功能来访问 SD 卡

最佳答案

我发现您的代码没有任何问题。只需确保用户已在 list 上授予应用程序权限即可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

关于java - 应用程序找不到 SD 卡内的图像目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645410/

相关文章:

Java 乐透模拟

java - 如何从 Java 调用 groovy 类的方法 - 字符串格式的方法名称和参数

java - Tesseract ocr 性能缓慢

android - 以地理 Intent 开始的谷歌地图 7 将在最接近坐标的地址而不是确切位置放置图钉

java - AtomicReferenceArray 的工作原理

java - 在某一点之后从历史记录中删除多个 Activity

php - 使用 Urban Airship 和 php 自动向 ios/android 设备发送通知

Android 访问 XML 中的 SDK 属性

java - Java内部类

Android如何获取设备显示颜色