获取Android资源的path

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

我在google上看到的这个问题的大部分答案都build议获取一个文件描述符,这意味着这是不可能的。

是吗?

编辑:我想这样做的原因是因为我正在写类接受媒体的path和播放它。 如果我可以传递资源的绝对path,testing会更容易。

使用URIpath而不是“绝对”的path,看到这个职位

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文件)

两种可能的解决scheme/解决您的情况:

  1. 用sdk工具将你需要的文件推到一个已知的位置(比如/ mnt / sdcard / …)
  2. 为您的testing目的,为您的媒体加载器创build一个模型提供程序,以接受原始资源而不是path中的内容

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

也就是说,有办法可以解决这个问题:

  • 第一次运行时,将res / assets中的文件复制到内部存储器。
  • 使用adb将文件推送到任何公共位置,如sdcard(注意,也不鼓励在那里使用绝对path,因为不是每个设备都可以将驱动器安装到相同的位置)
  • 使用固定电话,并访问任何文件夹,例如/data/data/yourapp//tmp/

在任何情况下,您都会针对最可能不适用于大多数设备的解决scheme进行testing。 我build议你遵循开发指南的指导: http : //developer.android.com/guide/topics/data/data-storage.html