【问题标题】:Environment.getExternalStorageDirectory() is not working in Android 4.1Environment.getExternalStorageDirectory() 在 Android 4.1 中不起作用
【发布时间】:2014-03-22 10:32:14
【问题描述】:

这有点奇怪,我无法在我的 sdcard 上获取文件的完整路径。控制台显示没有找到文件或目录。到目前为止,这是我一直在尝试的:

File file1=new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "/CDAInfo.txt");
    fileArray.add(file1);

Logcat:

 03-22 15:54:10.459: E/AndroidRuntime(17542): FATAL EXCEPTION: main
03-22 15:54:10.459: E/AndroidRuntime(17542): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vinit.airdrive/com.vinit.airdrive.MainActivity}: java.lang.NullPointerException
03-22 15:54:10.459: E/AndroidRuntime(17542):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2063)
03-22 15:54:10.459: E/AndroidRuntime(17542):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2088

有什么帮助吗?

【问题讨论】:

  • 您是否定义了读取外部存储的权限
  • 是的,已经定义好了..
  • 我想知道CDAInfo.txt文件是否在SD卡上?
  • 当然有。我在真实设备上模拟代码。
  • 请检查您的设备是否有外部存储,有些设备只有内部存储。请验证,然后在真实设备上检查您的代码。

标签: android filepath android-sdcard


【解决方案1】:

试试这个

    File file1= new File(Environment.getExternalStorageDirectory().getPath(),"CDAInfo.txt");

【讨论】:

  • 已经试过了...应用程序强制关闭,文件未找到异常。我不太明白,同一个程序昨天运行良好。我已经多次检查我的清单文件。甚至删除并重新创建读取权限,但没有用!
  • 如果在模拟器中发生这种情况,请编辑模拟器属性并提供一些 sdcard 大小,然后检查。
【解决方案2】:

我发现了问题,你的手机没有外部存储所以这样做

    String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
//External storage available
            mExternalStorageAvailable = mExternalStorageWriteable = true;
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            mExternalStorageAvailable = true;
            mExternalStorageWriteable = false;
//only internal available
        } else {
            mExternalStorageAvailable = mExternalStorageWriteable = false;
// no one is available
        }

请阅读this

希望对你有帮助

【讨论】:

    【解决方案3】:

    请获取这样的路径,

      File file1=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/CDAInfo.txt");
    

    【讨论】:

    • 非常感谢您的努力...但我已经尝试过了。它也不起作用。
    • 尝试使用 Environment.getExternalStorageDirectory().getPath() 而不是这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2015-10-01
    相关资源
    最近更新 更多