2014-12-13 3 views
3

Так что проблема у меня есть следующая,getExternalFilesDir (нуль) возвращает нуль для некоторых пользователей

следующая строка коды бросает NullPointerException для некоторых пользователей моего приложения, но я не знаю, почему

String state = Environment.getExternalStorageState(); 
if(Environment.MEDIA_MOUNTED.equals(state)) 
    baseDir = getExternalFilesDir(null).getAbsolutePath(); 
else 
    baseDir = getFilesDir().getAbsolutePath(); 

более конкретно эта его часть

baseDir = getExternalFilesDir(null).getAbsolutePath(); 

Этот код называется в OnPostCreate() и у меня есть необходимые разрешения в случае, если вы задавались вопросом.

Так getExternalFilesDir (null) возвращает null по какой-либо причине, даже если он будет установлен.

Я также немного искал SO и нашел связанный пост с тем же вопросом, но нет реального ответа, только хороший - this.

Так это просто проблема на некоторых пользовательских телефонах или проблема в целом на конце андроидов?

ответ

4

Это странно. В документации по Android говорится, что он возвращает null только в том случае, если внешняя память не установлена. Я думаю, что это правильно:

String state = Environment.getExternalStorageState(); 
if(Environment.MEDIA_MOUNTED.equals(state)) { 
    File baseDirFile = getExternalFilesDir(null); 
    if(baseDirFile == null) { 
     baseDir = getFilesDir().getAbsolutePath(); 
    } else { 
     baseDir = baseDirFile.getAbsolutePath(); 
    } 
} else { 
    baseDir = getFilesDir().getAbsolutePath(); 
} 
+0

Хммм, да, это почти единственное решение этого, я предполагаю. Тем не менее, было бы интересно узнать, почему это может произойти. Мое единственное предположение заключалось в том, что это зависит от реализации производства. – DokutoMekki

Смежные вопросы