rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 画像Uriからファイルパスとタイトルを取り出す

2022 Feb. 13.
2022 Jan. 30.
2020 Mar. 21.

MediaStore.Images.Media.DATAはdeprecated in API 29。

/*
    画像Uriからファイルパスとtitleを取り出す
*/
protected void getPathTitleFromUri(){
    Uri imageUri;
    String imageFilePath, imageTitle
    File imageFile;
    ContentResolver contentResolver = this.getContentResolver();
    String[] columns = {
            // MediaStore.Images.Media.DATA,  <- deprecated
            MediaStore.Images.Media.TITLE,
            "_data"    // path information
    };
    Cursor cursor = contentResolver.query(imageUri, columns, null, null, null);
    if( cursor == null ) {
        Toast toast = Toast.makeText(this, "ContentResolver#queryに失敗しました", Toast.LENGTH_SHORT);
        toast.show();
        return;
    }

    // int pathIndex = cursor.getColumnIndex( MediaStore.Images.Media.DATA);
    int titleIndex = cursor.getColumnIndex( MediaStore.Images.Media.TITLE);
    int pathIndex = cursor.getColumnIndexOrThrow("_data")

    if ( cursor.moveToFirst() ) {
        imageFilePath = cursor.getString(pathIndex);
        imageTitle = cursor.getString(titleIndex);
    } else {
        // cursor移動失敗
        return;
    }
    cursor.close();

    if (imageFilePath != null) {
        imageFile = new File(imageFilePath);
    } else {
        // imageFilePath取得失敗
        return;
    }
}