Android開発爆笑記

レセプターのソフト&ハード開発備忘録

ファイル選択からファイル名を取得する。

◎選択呼出し側

static final int REQUEST_OPEN_FILE = 1001;
private Context context;

 

context = MainActivity.this;

 

intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("text/csv");   //TEXT_CSV file only (←追記)
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, "Open a file"), REQUEST_OPEN_FILE);

 

◎選択後戻り

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (RESULT_OK == resultCode) {
        if (REQUEST_OPEN_FILE == requestCode) {
            Uri uri = data.getData();
            String[] projection = {MediaStore.MediaColumns.DISPLAY_NAME};    // ※
            Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
            if (cursor != null) {
                String path = null;
                if (cursor.moveToFirst()) {
                    path = cursor.getString(0);
                    Log.d("kyo", path);
                }
                cursor.close();
            }
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

 

◎得られる情報

「ファイル名.csv

 

※MediaStore.MediaColumns.DISPLAY_NAME

developer.android.com

 

(追記)intent.setType("*/*");にすると単なるファイル選択になり後の処理は分かりやすかった。