我有以下内容:
getResources().getResourceEntryName(resourceId);
问题是它只检索文件名而不包括扩展名。
例如,如果我有以下res/drawable/pic.jpg文件,则
getResources().getResourceEntryName(resourceId);
返回值是"pic"。缺少扩展名".jpg"。
要获取“res / drawable / pic.jpg”,你可以使用以下代码:
TypedValue value = new TypedValue();
getResources().getValue(resourceId, value, true);
// check value.string if not null - it is not null for drawables...
Log.d(TAG, "Resource filename:" + value.string.toString());
// ^^ This would print res/drawable/pic.jpg
来源:android/frameworks/base/core/java/android/content/res/Resources.java
Field[] fields = R.raw.class.getFields();
for (int count = 0; count < fields.length; count++) {
// Use that if you just need the file name
String filename = fields[count].getName();
Log.i("filename", filename);
int rawId = getResources().getIdentifier(filename, "raw", getPackageName());
TypedValue value = new TypedValue();
getResources().getValue(rawId, value, true);
String[] s = value.string.toString().split("/");
Log.i("filename", s[s.length - 1]);
}
TypedValue value = new TypedValue();
getResources().getValue(resourceId, value, true);
String resname = value.string.toString().substring(13, value.string.toString().length());
resname = "pic.jpg"
AssetManager am = this.getApplicationContext().getAssets()
InputStream is = am.open(foldername+"/"+filename)
Bitmap myNewImage = BitmapFactory.decodeStream(is);
我希望这能够达到你的预期。
更新:看起来确实是可能的,请参考Aleksandar Stojiljkovic的回答。