为什么API级别4不支持getExternalStoragePublicDirectory和getExternalFilesDir?

时间:2013-08-25 23:52:26

标签: java android

我正在尝试关注Saving Files参考。 API级别4为什么getExternalStoragePublicDirectorygetExternalFilesDir 不支持

现在我正在使用一些支持API级别4的示例应用程序 我使用以下代码:

public File getAlbumStorageDir(String albumName) {
    // Get the directory for the user's public pictures directory. 
    File file = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), albumName);
    if (!file.mkdirs()) {
        //Log.e(LOG_TAG, "Directory not created");
        System.out.println("Directory not created"); 
    }
    return file;
}

我收到以下错误:Call requires API level 8 (current min is 4): android.os.Environment#getExternalStoragePublicDirectory

还有什么我可以用于4?

1 个答案:

答案 0 :(得分:0)

我设法在这里解决了解决方案:

只有api级别8及以上才支持getExternalStoragePublicDirectorygetExternalFilesDir,所以我不得不使用替代方法:

File sdCardRoot = Environment.getExternalStorageDirectory();// gave me the SDcard path.

然后我按照ref

中的描述添加了应用程序的url /路径
String sdCardDirectory = sdCardRoot + "/Android/data/" + getApplicationContext().getPackageName();

然后我启动了一个新的File类并创建了mkdirs()所需的目录。然后我用新地址启动另一个文件类,并在这里创建实际文件是它的样子:

        File file = new File(sdCardDirectory, "files");

        if(file.mkdirs() || file.isDirectory()){
            System.out.println("works.");
        }
        file = new File(file, albumName);
        try{
            if(file.createNewFile()){
                System.out.println("File Created");
            }else{
                System.out.println("File Already Exsists");
            }
        }catch (IOException ExceptionS) {
            System.out.println("Encountered the following Exception: " + ExceptionS);
        }

        if (!file.exists()) {
            System.out.println("File Does not Exist");

        }else{
            System.out.println("File Exist!");

        }

我很确定有更好的方法可以做到这一点,但我是Android开发新手。

希望能帮助任何人。