web-dev-qa-db-ja.com

URIからファイル名を取得する方法

こんにちは私はAndroidギャラリーでビデオプレーヤーを開発しています。ギャラリーからURIを受け取ります。ビデオを再生するときにビデオタイトルを表示する必要があります。したがって、コンテンツにタイトルメタデータがない場合。非表示にする必要があります。ビデオファイル名。ビデオコンテンツファイル名を取得するにはどうすればよいですか?

ありがとうございました

13
byungkyu

URLからファイル名を取得するためのコードは次のとおりです

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

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

f.getName();
24
fargath

答えのどれも実際に質問を解決しないので、私はここに私の解決策を置きます、それが役立つことを願っています。

     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();
                }
            }
        }
5
alijandro

Uriがコンテンツプロバイダーuriの場合、これがファイル情報を取得する方法です。

        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        /*
         * Get the column indexes of the data in the Cursor,
         * move to the first row in the Cursor, get the data,
         * and display it.
         */
        int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
        cursor.moveToFirst();
        nameView.setText(cursor.getString(nameIndex));

https://developer.Android.com/training/secure-file-sharing/retrieve-info.html

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

これはImageの例です。ニーズに合わせて同じことを試すことができます(ビデオ)。

ありがとう&最高の幸運:)

1
Piyush Patel
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)
        {

        }
1
Ayaz Alifov

以下のコードは、ギャラリーからの画像の場合に機能します。どのファイルタイプでも機能するはずです。

    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();
    }

ここ 詳細な説明などを見つけることができます。

0
avinesh