Environment.getExternalStorageDirectory() не работает в Android 4.1

Это немного странно, я не могу получить полный путь к файлу на своей SD-карте. Консоль показывает, что файл или каталог не найдены. Вот что я пытался до сих пор:

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

Логкат:

 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

Любая помощь, пожалуйста?


person Vinit Shandilya    schedule 22.03.2014    source источник
comment
вы определили разрешение на чтение внешнего хранилища   -  person tauitdnmd    schedule 22.03.2014
comment
да уже определились..   -  person Vinit Shandilya    schedule 22.03.2014
comment
Я хочу знать, что файл CDAInfo.txt находится на SD-карте или нет?   -  person Imtiyaz Khalani    schedule 22.03.2014
comment
Конечно, он есть. Я эмулирую код на реальном устройстве.   -  person Vinit Shandilya    schedule 22.03.2014
comment
пожалуйста, проверьте, есть ли на вашем устройстве внешнее хранилище, на некоторых устройствах есть только внутреннее хранилище. Пожалуйста, подтвердите, а затем проверьте свой код на реальном устройстве.   -  person Sekhar Madhiyazhagan    schedule 22.03.2014
comment
У меня Sony Xperia, и да, у него только внутренняя память. Но даже жестко закодированная строка пути не работает... например, /sdcard/CDAInfo.txt... Это очень расстраивает! :(   -  person Vinit Shandilya    schedule 22.03.2014
comment
см. решение вашей проблемы =1#comment68665077_40718616">здесь   -  person Maher Tag    schedule 21.11.2016


Ответы (3)


попробуй это

    File file1= new File(Environment.getExternalStorageDirectory().getPath(),"CDAInfo.txt");
person maddy d    schedule 22.03.2014
comment
Уже пробовал это ... приложение принудительно закрывается с исключением "Файл не найден" .. Я действительно не понимаю, та же программа работала нормально в последний день. Я много раз проверял свой файл манифеста. Даже удалил и заново создал разрешение на чтение, но толку никакого! - person Vinit Shandilya; 22.03.2014
comment
Если это происходит в эмуляторе, отредактируйте свойства эмулятора и укажите размер SD-карты, а затем проверьте. - person maddy d; 22.03.2014

я нашел проблему, у вашего телефона нет внешней памяти, так что сделайте так

    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
        }

прочитайте это

Я надеюсь, что это помогает

person Imtiyaz Khalani    schedule 22.03.2014

пожалуйста, получите такой путь,

  File file1=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/CDAInfo.txt");
person Sekhar Madhiyazhagan    schedule 22.03.2014
comment
Большое спасибо за ваши усилия ... но я уже пробовал это. Это тоже не работает. - person Vinit Shandilya; 22.03.2014
comment
попробуйте вместо этого использовать Environment.getExternalStorageDirectory().getPath(). - person maddy d; 22.03.2014