如何通过ID获取原始资源文件名?

17

我在res/raw中有.ogg文件,已经实现了将文件保存到SD卡的功能,并且我希望将文件名设置为原始文件名。


你的问题是什么?你有一个 int 类型的资源 ID "R.raw.music",现在想从中获取字符串 "music" ?! - EboMike
4个回答

15

2
这不是与OP所要求的相反吗? - EboMike
你很机智,链接到了正确的函数,但是答案本身使用了错误的函数。我猜这就是你说服了提问者的方法 :) - EboMike
1
幸运的是那不是色情链接,否则你会说我故意发这个链接来吸引 OP 的注意力 ;) - Snicolas
1
没有名为 resources.getResourceByName() 的方法。 - umesh

11
使用Resources.getResourceName(id)来获取package:type/entryname,或使用Resources.getResourceEntryName(id)来获取条目名称(文件名)。

2
如果您想从资源ID获取名称,可以使用Resources.getResourceName()。您可以使用Context.getResources()获取资源对象。
个人而言,我更喜欢在strings.xml中存储字符串数组,并将其映射到资源ID,但这取决于您真正想要实现的目标。

0

这是一个非常老的问题,但是如果其他人也在尝试同样的事情,这个方法可以用来获取文件名:

Resources myResources = context.getResources();

String myFileName = myResources.getString((int)R.raw.myFile);

由于某些原因,即使R.raw.myFile的类型为:"final int",而Resources.getString()需要参数"int id",

如果您不将R.raw.myFile强制转换为int,Lint将用错误标记该行,显示"Expected resource of type string"

尽管查看文档,似乎没有重载版本的Resources.getString()接受字符串参数。

我使用的是Android Studio v3.6.3,支持最低SDK 21。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接