1

これは、URI を指定してファイル パスを返すコードです。

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    //String[] projection = { MediaColumns.DATA };

    Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

プロジェクションが MediaStore.Images であるため、これはギャラリーの画像に対して機能します。他のすべてのディレクトリのファイル パスを取得するにはどうすればよいですか? ファイルはドキュメント タイプにすることができ、SD カードの任意の場所に置くことができます。ファイル パスを検索するには、どのプロジェクションを使用すればよいですか?

4

1 に答える 1

2

問題はここにあります。投影のみをチェックしImagesます。したがって、ファイルのタイプが異なる場合、パスは取得されません。Exception返されます。また、使用する方が良いです:

 int column_index = cursor.getColumnIndex(MediaColumns.DATA);

onwtry-catchブロックを使用します。これにより、アプリがクラッシュするのを防ぐことができます

于 2013-04-21T18:11:20.670 に答える