Получить путь к ресурсу Android
мой вопрос: Можно ли получить абсолютный путь ресурса (в подкаталоге res/ folder) в Android?
большинство ответов, которые я вижу на этот вопрос в google, предлагают получить файловый дескриптор, подразумевая, что это невозможно.
- Это он?
EDIT: причина, по которой я хочу это сделать, заключается в том, что я пишу классы, которые принимают путь к медиа и воспроизводят его. Тестирование было бы намного проще, если бы я мог пройти абсолютный путь ресурс.
3 ответов
используйте пути URI вместо "абсолютного" пути, см. этот пост
Uri path = Uri.parse("android.resource://com.segf4ult.test/" + R.drawable.icon);
Uri otherPath = Uri.parse("android.resource://com.segf4ult.test/drawable/icon");
или используйте openRawResource (R. id) для открытия inputStream и используйте его так же, как вы бы использовали FileInputStream (только для чтения)
не возможно. Папка ресурсов, которую вы видите, скомпилирована в apk, и она может даже не храниться как есть. (например, эти XML-файлы макета больше не являются xml-файлами после его компиляции)
два возможных решения / обходной путь для вашей ситуации:
- нажмите файл, который вам нужен в известном месте (например, /mnt / sdcard/... ) с sdk tools
- создайте поставщика макета для вашего загрузчика носителей, который принимает материал в сырье, а не путь, для вашего цель тестирования
В общем, нет. Как здесь повторялось несколько раз, вам необходимо получить к ним доступ через ресурсы.
тем не менее, есть способы обойти это:
- скопируйте файлы из res / assets во внутреннее хранилище при первом запуске.
- используйте adb для перемещения файлов в любое общедоступное место, например sdcard (обратите внимание, что там также не рекомендуется использовать абсолютные пути, так как не каждое устройство может монтировать диски в одно и то же местоположение)
- используйте корневой телефон и получите доступ к любой папке, например,
/data/data/yourapp/
или/tmp/
в любом случае вы протестируете решение, которое, скорее всего, не будет работать на большинстве устройств. Я предлагаю вам следовать инструкциям из руководства dev:http://developer.android.com/guide/topics/data/data-storage.html