2012-06-06 2 views
2

Я занимаюсь этим довольно долгое время. Я не могу понять, почему мой файл /res/raw/video.mp4 не найден в моем приложении для Android. Я нахожусь на API 15, и телефон обновлен с v4.0.3.Доступ к файлу ресурсов в Android

тест в настоящее время код выглядит следующим образом:

String file = "android.resource://" + getPackageName() + "/" + R.raw.movie; 
File f = new File(file); 
message = f.exists() ? "file exists" : "file missing"; 

Все комбинации я пытался до сих пор результаты в строке сообщения возвращается в «файл отсутствует». Каков правильный способ доступа к файлу из ресурсов? Пробовал очевидные «/res/raw/video.mp4» и т. Д., Но все не удалось.

+0

Этот ответ может пригодиться? http://stackoverflow.com/a/2856501/1063730 – yoshi

+0

Да, кажется, я могу открыть его во входном потоке, используя этот, но мне нужно получить адрес в виде строки, чтобы использовать ThumbnailUtils.createVideoThumbnail() которая является моей главной целью (но я хотел бы понять, почему мой пример не работает независимо). – BlueVoodoo

+0

Ну, это научит меня читать комментарии перед отправкой ответа ... yoshi опубликовал ссылку, в которой говорилось то же, что и мой ответ. : p – Barak

ответ

3

Предполагая, что вы хотите, чтобы открыть поток для обработки файла вы должны делать это:

InputStream raw = getResources().openRawResource(R.raw.movie); 

EDIT

Ок, теперь я точно знаю, что

Посмотрите это SO question

В принципе, вам нужно будет скопировать файл из ресурсов туда, где вы можете получить его, как SD-карту или внутреннее хранилище.

+0

Да, это работает, но мне не нужно открывать InputStream для этого теста. – BlueVoodoo

+0

А, ок. Спасибо за это разъяснение. – BlueVoodoo

0

String url = "file:///android_asset/raw/filename.jpg «;

+0

Тот же результат. Пробовал «новый файл (« файл: ///android_asset/raw/video.mp4 »)». Также попытался «файл: ///android_asset/res/raw/video.mp4», но это тоже не сработало. – BlueVoodoo