端末内の全画像(一部除く)パスを取得してみたよ
端末に保存されるリソースは全てSQLite内に情報が格納されるみたいです。今回は格納されている画像情報を全て取得してみました。
やりかた
Uri image_uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Cursor cursor = getContentResolver().query(image_uri, null, null, null, null); cursor.moveToFirst(); String path = new String[cursor.getCount()]; for (int i = 0; i < path.length; i++) { path[i] = cursor.getString(1); cursor.moveToNext(); } cursor.close();
これで path に画像パスが保管されます。queryの第1引数のuriでドコを対象にするか決められるようです。今回は外部ストレージのみを対象としています。ちなみに cursor.getString(引数) の引数を変えると色々なデータが取ってこれます。
引数 | データ内容 | 実データ(例) |
---|---|---|
0 | インデックス | 0 |
1 | ファイルパス | /sdcard/DCIM/Camera/test.jpg |
2 | ファイルサイズ | 337243 |
3 | ファイル名(拡張子付き) | test.jpg |
4 | MIMEタイプ | image/jpeg |
5 | ファイル名(拡張子なし) | test |
6 | 謎データ*1 | 1256906217 |
7 | 謎データ*2 | 1249145692 |
画像以外のリソース
今回は MediaStore.Images.Media を使いましたが、このAPIの継承元は MediaStore となっており。子に Audio, Video もいます。たぶん同じ方法で同じ事ができると思います。
一部取れないデータ
DRMのかかっているデータはDrmStoreに入るようです。