Когда я объявляю только READ_EXTERNAL_PERMISSION в своем манифесте, getExternalFilesDir() возвращает null. Если я объявляю WRITE_EXTERNAL_STORAGE, getExternalFilesDir() что-то возвращает.getExternalFilesDir (null) возвращает null даже с разрешением READ_EXTERNAL_STORAGE
Я сделал чек, чтобы узнать, действительно ли у меня есть разрешение и проверено, установлено ли внешнее хранилище.
PackageManager pm = mContext.getPackageManager();
int permRead = pm.checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, mContext.getPackageName());
//permRead: "0"
int permWrite = pm.checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, mContext.getPackageName());
//permWrite: "-1"
String extState = Environment.getExternalStorageState();
// extState: "mounted"
if (permRead == PackageManager.PERMISSION_GRANTED
&& extState.equals(Environment.MEDIA_MOUNTED))
{
File dir = mContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
// dir is null here!!
... more work...
}
Как я понимаю, мне нужно только READ_EXTERNAL_STORAGE, чтобы получить что-то из getExternalFilesDir().
Что может быть причиной?
PS. Мое тестовое устройство - LG Optimus Pro G с Android 4.1.2, и я перезагрузил устройство.
Наконец-то результат! Environment.getExternalStorageDirectory() возвращает «storage/sdcard0». Но почему getExternalFilesDir() терпит неудачу? Там все еще нет объяснений ... – wooohoh
в этом вы можете дать полный путь с filename.ext –
то работа я думаю –