获取Android资源的路径

时间:2011-06-10 02:52:56

标签: android resources absolute-path

我的问题是:是否有可能在Android中获取资源的绝对路径(在res /文件夹的子目录中)?

我在google上看到这个问题的大部分答案建议获取文件描述符,暗示这是不可能的。

是吗?

编辑:我之所以这样做是因为我正在编写接受媒体路径并播放它的类。如果我可以传递资源的绝对路径,测试会容易得多。

3 个答案:

答案 0 :(得分:31)

使用URI路径而不是“绝对”路径,请参阅this post

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(readonly)相同的方式使用它

答案 1 :(得分:13)

不可能。您看到的资源文件夹被编译到apk中,它甚至可能不会存储。 (例如,那些布局xml文件在编译后不再是xml文件)

两种可能的解决方案/解决方案适用于您的情况:

  1. 使用sdk工具将您需要的文件推送到已知位置(例如/ mnt / sdcard / ...)
  2. 为您的媒体加载器创建一个模型提供程序,它接受原始资源而不是路径中的内容,以用于测试目的

答案 2 :(得分:6)

一般来说,。由于在这里重复了几次,您需要通过资源访问它们。

那就是说,你有办法解决这个问题:

  • 首次运行时将文件从res / assets复制到内部存储。
  • 使用adb将文件推送到任何公共位置,例如SD卡(注意,不建议在那里使用绝对路径,因为并非每个设备都可以将驱动器安装到同一位置)。
  • 使用有根电话,并访问任何文件夹,例如/data/data/yourapp//tmp/

在任何情况下,您都要测试一种很可能在大多数设备中不起作用的解决方案。我建议您按照开发指南中的说明进行操作:http://developer.android.com/guide/topics/data/data-storage.html