Android应用可以在Nexus S上写入数据,但不能在“/ sdcard / filename”路径上的samsung S2上写入数据?

时间:2012-06-20 11:46:21

标签: android android-sdcard

  1. 我已经获得了所需的许可: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. 将路径硬编码为"/sdcard/filename"
  3. 我猜Nexus没有外部SD支持但S2有,我认为这可能会导致路径出现问题。我该如何优雅地处理这样的案件?

2 个答案:

答案 0 :(得分:5)

在每台Android设备上,您都可以获得外部存储的路径,如下所示

Environment.getExternalStorageDirectory()

我有一个Nexus设备,它可以运行 - 也可以在我的旧里程碑

答案 1 :(得分:0)

以下是创建自己的应用目录的示例用法:

您应该始终检查SD卡是否可用,因为它可以安装/风化到计算机或从设备中删除。

private void SetDirectory() {
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {

            extStorageDirectory = Environment.getExternalStorageDirectory().toString();
            File dbDirectory = new File(extStorageDirectory + "/yourAppName/whatever/");
            myDirectory.mkdirs();// Have the object build the directory

        } else if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED_READ_ONLY)) {

            //TODO Make some kind of allert or Toast to warn/notify the user that the SDcard is needed.
        }

    }

您可以使用android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)方法检查您的应用中的卡是否可用。