Файл чтения внутренней памяти Android - PullRequest
3 голосов
/ 23 марта 2012

У меня проблема с внутренней памятью Android. Я создал папку в корневой папке пакета с именем getDir() и с MODE_WORLD_WRITEABLE, потому что я хочу, чтобы приложение камеры записывало захваченное изображение в эту папку. Во всяком случае, я вижу, что захваченное изображение находится внутри этой папки с DDMS. Проблема в том, что я не могу прочитать этот файл.

Я пытался прочитать файл с этим кодом:

File file = context.getDir("images", Context.MODE_WORLD_READABLE);
File image = new File(file, "image.jpeg");
if (image.canRead()) 
    Log.w("read", "can read");
else
    Log.w("read", "can't read");

А в LogCat есть только второе сообщение (не читается).

Я также пытался создать FileInputStream с именем файла, но я получаю FileNotFoundException.

Может кто-нибудь сказать мне, что я здесь не так делаю?

Заранее спасибо

EDIT:

Чтение файла правильное, но единственная проблема заключается в том, что когда приложение cam сохраняет изображение в указанное место, разрешения, установленные приложением cam для файла изображения, равны -rwxrwx---. После изменения разрешений с помощью

adb (chmod 777 image.jpeg) 

Мне удалось прочитать изображение. Интересно, что приложение cam записывает файлы изображений в sdcard с ----rwxr-x.

Есть ли способ изменить разрешение файла во время выполнения?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Почему бы не поместить его в каталог фотографий по умолчанию?

File path = Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");

(От: http://developer.android.com/reference/android/os/Environment.html)

См. Также более полный пример вызова приложения камеры: http://developer.android.com/training/camera/photobasics.html

0 голосов
/ 23 марта 2012

Ссылка на разработчиков Android вы должны использовать openFileOutput() и openFileInput() для работы на внутреннем хранилище ... вы не можете / не можете создавать каталоги там. Android делает это сам. Эти данные будут удалены, когда ваше приложение будет удалено.

...