2013-06-08 3 views
1

Я превращаю свое приложение в несколько похожих приложений и используя проект базовой библиотеки. Я хочу загрузить видео, которое будет в res/raw/welcome.m4a в зависимых приложениях.Как ссылаться на ресурс не в проекте библиотеки, а только в зависимом проекте приложения?

Это как делается перед использованием проекта библиотеки:

vv.setVideoURI(Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.welcome)); 

Это производит ошибку в моей библиотеке проекта, потому что res/raw/welcome.m4v не существует, он будет только в папке App Project res/ , и будет отличаться для каждого приложения.

Моим текущим обходным путем является создание манекена res/raw/welcome.m4v в проекте базовой библиотеки, чтобы он не стал жаловаться.

Итак, мой вопрос: как мне получить код в проекте библиотеки, который ссылается на ресурсы, которых нет в проекте библиотеки?

+0

Я рекомендую передать хостинг-приложение в путь, который будет использоваться в вашем проекте библиотеки. IMHO, проект библиотеки не должен знать и не заботиться о том, где находится видео: исходный ресурс, локальный файл, URL-адрес rtsp, URL-адрес http и т. Д. – CommonsWare

+0

Как мне это сделать? Сам код активности находится в проекте библиотеки. Мне нужно было бы настроить это внешне на активность. Я бы сделал это в файле строк? – pixelearth

+0

Где-то проект хоста должен быть подключен к этой библиотеке. Где бы это ни было, передайте значение. Например, добавьте его в дополнение к «Intent», используемому для передачи управления этой активности из библиотеки. – CommonsWare

ответ

1

Если только происходит редко, вы можете попробовать это:

vv.setVideoURI(Uri.parse("android.resource://"+getPackageName()+"/"+getResources().getIdentifier("welcome", "raw", getPackageName()))); 

Не так производительным, как с помощью идентификаторов, но он должен работать.