2012-02-22 9 views
4

によってファイル名とリソースの拡張を取得するために、どのように私は、次のしている:アンドロイド:リソースID

getResources().getResourceEntryName(resourceId); 

を問題は、それが拡張子なしのファイル名のみを取得すること、です。例えば

私は次のres /描画可能/ pic.jpgを持っている場合、

getResources().getResourceEntryName(resourceId); 

は "PIC" の値を返しています。拡張子.jpgがありません。

答えて

9

は "RES /描画可能/ pic.jpgは" あなたがこれを使用することができます取得するには
+0

確かに、それはAPIレベル1からあります:)ソリューションとしてのマーク – Genry

+0

実際の拡張子がpngであってもmyimage.xmlを返します。 – Justin

1

短い回答:できません。

これを行うもう1つの方法は、グラフィックスをassetsフォルダ内に置くことです。 その後、あなたのアプリケーションに許可を必要とせずにファイルに直接アクセスすることができます。

あなたは、例えば、あなたの活動で行うことができます。

AssetManager am = this.getApplicationContext().getAssets() 
InputStream is = am.open(foldername+"/"+filename) 
Bitmap myNewImage = BitmapFactory.decodeStream(is); 

私は、これはあなたが考えていたものを達成することを願っています。


UPDATE:代わりにAleksandar Stojiljkovic's answerを参照してください、それが実際に可能であると思われます。

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 

出典:アンドロイド/フレームワーク/ベース/コア/ javaの/アンドロイド/コンテンツ/ RES/Resources.java

+0

問題は、画像に表示するためのファイルと、WebViewで表示できるリソースが必要なことです。したがって、WebViewにはファイルへのリンク(拡張子を含む)が必要です。値/ arrays.xmlに2つの配列を宣言することで回避策として解決しました。 1つはリソースID付きで、もう1つはファイル名拡張子付きです。 – Genry

+0

Aleksandarの解決策は*可能です。 – Matthias

+0

申し訳ありませんが、私は彼の答えにユーザーを誘導する答えを更新しました。ヘッドアップをありがとう! – devsnd

2

あなたはとても

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]); 
    } 
2

これが最善の解決策になる必要があります行うことができます。

TypedValue value = new TypedValue(); 
    getResources().getValue(resourceId, value, true); 
String resname = value.string.toString().substring(13, value.string.toString().length()); 

resname = "pic.jpg"

関連する問題