2010-11-24 14 views
12

こんにちは 私はアンドロイドギャラリーでビデオプレーヤーを開発しています。 私はgallryからURIを受け取ります。ビデオを再生するときにビデオタイトルを表示する必要があります。 コンテンツにタイトルのメタデータがない場合。私はビデオファイル名を聞かなくてはなりません。 ビデオコンテンツのファイル名を取得するには?URIからファイル名を取得する方法

はここ

+0

URIを表示しますか?または/で区切って最後の部分を表示しますか? – Mikhail

+0

最後の部分を表示したい。 URI vALUEを表示する場合は/ external/video/media/3です。 3はidです。ファイル名ではありません。この他のポストで – byungkyu

+0

ルック: [http://stackoverflow.com/questions/1105593/get-file-name-from-uri-string-in-c-sharp][1] [ 1]:http://stackoverflow.com/questions/1105593/get-file-name-from-uri-string-in-c-sharp –

答えて

21

これはイメージのための一例であるURLから

Uri u = Uri.parse("www.google.com/images/image.jpg"); 

File f = new File("" + u); 

f.getName(); 
+0

私の場合はURLの末尾にある名前だけですが、Googleドライブや他のどこかのファイルからドキュメントを取得している間は、スラッシュ。 – cammando

1
int actual_image_column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
String filename = cursor.getString(actual_image_column_index); 

のファイルの名前を取得するためのコードですありがとうございました。あなたのニーズ(ビデオ)に同じことを試すことができます。

おかげ&ベスト幸運:)

-2

ここで私はあなたにfilename/Imagenameを抽出するには、ギャラリー

から画像をアップロードするサンプルコードを与えている、これは役立つ次

File f = new File(selectedPath); 
System.out.println("Image name is ::" + f.getName());//get name of file 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
switch (requestCode) { 
case 1: 
if (resultCode == YourActivity.RESULT_OK) { 
Uri selectedImageUri = data.getData(); 
String selectedPath = getPath(selectedImageUri); 
File f = new File(selectedPath); 
System.out.println("Image name is ::" + f.getName());//get name of file 
} 
} 

希望を実行します。

+2

'getPath()'はあなたのコードスニペットに記載されていないカスタム関数です –

4

答えのどれも実際に質問を解決していないので、私はここに私のソリューションを入れて、それが役に立つと願っています。コードの下

 String fileName; 
    if (uri.getScheme().equals("file")) { 
      fileName = uri.getLastPathSegment(); 
     } else { 
      Cursor cursor = null; 
      try { 
       cursor = getContentResolver().query(uri, new String[]{ 
         MediaStore.Images.ImageColumns.DISPLAY_NAME 
       }, null, null, null); 

       if (cursor != null && cursor.moveToFirst()) { 
        fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DISPLAY_NAME)); 
        Log.d(TAG, "name is " + fileName); 
       } 
      } finally { 

       if (cursor != null) { 
        cursor.close(); 
       } 
      } 
     } 
+0

これは正解ですね... @ alijandro –

1
try 
     { 
      String uriString = "http://somesite.com/video.mp4"; 
      URI uri = new URI(uriString); 

      URL videoUrl = uri.toURL(); 
      File tempFile = new File(videoUrl.getFile()); 
      String fileName = tempFile.getName(); 
     } 
     catch (Exception e) 
     { 

     } 
+0

誰かが答えを下げました。理由を説明してください。 –

+0

@Grsmto、申し訳ありませんが、コメントを書く前にコードを実行しようとしましたか?私はあなたのサンプルURLをチェックして、適切な結果を返したので、私は考えません - file.mp3 –

+0

私は間違っているかもしれません、私のAndroidスタジオデバッガが本当に奇妙に動作していることに気付いた...私は私の答えを削除します。 – Grsmto

0

ギャラリーから画像の場合には私のために動作しますが、これは、任意のファイルタイプのために働く必要があります。

String fileName = "default_file_name"; 
    Cursor returnCursor = 
      getContentResolver().query(YourFileUri, null, null, null, null); 
    try { 
     int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); 
     returnCursor.moveToFirst(); 
     fileName = returnCursor.getString(nameIndex); 
     LOG.debug(TAG, "file name : " + fileName); 
    }catch (Exception e){ 
     LOG.error(TAG, "error: ", e); 
     //handle the failure cases here 
    } finally { 
     returnCursor.close(); 
    } 

Here詳細な説明などがあります。

関連する問題