Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Android资源的路径_Android_Resources_Absolute Path - Fatal编程技术网

获取Android资源的路径

获取Android资源的路径,android,resources,absolute-path,Android,Resources,Absolute Path,我的问题是:是否有可能在Android中获取资源的绝对路径(在res/文件夹的子目录中) 我在谷歌上看到的关于这个问题的大多数答案都建议使用文件描述符,这意味着这是不可能的 是吗 编辑:我之所以要这样做,是因为我正在编写接受媒体路径并播放它的类。如果我能通过资源的绝对路径,测试就会容易得多。不可能。您看到的资源文件夹已编译到apk中,甚至可能无法按原样存储。(例如,这些布局xml文件在编译后不再是xml文件) 针对您的情况,有两种可能的解决方案/解决方法: 将文件存储在“/assets”目录中

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

我在谷歌上看到的关于这个问题的大多数答案都建议使用文件描述符,这意味着这是不可能的

是吗


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

不可能。您看到的资源文件夹已编译到apk中,甚至可能无法按原样存储。(例如,这些布局xml文件在编译后不再是xml文件)

针对您的情况,有两种可能的解决方案/解决方法:

  • 将文件存储在“/assets”目录中
  • 使用sdk工具将所需文件推送到已知位置(如/mnt/sdcard/…)
  • 为您的媒体加载程序创建一个模型提供程序,该程序接受原始资源中的内容,而不是路径中的内容,用于您的测试目的

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

    也就是说,有一些方法可以解决这一问题:

    • 第一次运行时,将文件从资源/资产复制到内部存储器
    • 使用adb将文件推送到任何公共位置,如SD卡(注意,不建议在其中使用绝对路径,因为并非每个设备都可以将驱动器安装到同一位置)
    • 使用根目录电话,访问任何文件夹,例如,
      /data/data/yourapp/
      /tmp/
    在任何情况下,您都可以针对一个解决方案进行测试,该解决方案很可能无法在大多数设备中工作。我建议您按照开发指南中的说明进行操作:

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


    或者使用openRawResource(R.id)打开inputStream,并以与使用FileInputStream(只读)相同的方式使用它。

    这似乎不正确。我刚刚尝试了HPP的答案,效果很好。HPP建议的答案是你最好的方法。请看HPP的答案,你写了你的答案2011,你仍然坚持你的答案吗?它是什么类型的文件?你应该将HPP的答案标记为正确的答案。你标记的那个不是correct@LeonardoAcevedo完成。链接,
    Uri path = Uri.parse("android.resource://com.segf4ult.test/" + R.drawable.icon);
    Uri otherPath = Uri.parse("android.resource://com.segf4ult.test/drawable/icon");