クラスで MediaStore.Files クラス、その言及、
非メディアファイルを含む、メディアストレージ内のすべてのファイルのインデックスを含むメディアプロバイダーテーブル。
PDFなどの非メディアファイルのクエリに興味があります。
CursorLoaderを使用してデータベースを照会しています。コンストラクターの2番目のパラメーターには、それぞれに_EXTERNAL_CONTENT_URI
_および_INTERNAL_CONTENT_URI
_定数が定義されているため、メディアタイプAudio、Images、Videoで簡単に取得できるUri引数が必要です。
MediaStore.Filesの場合、そのような定義済み定数はありません。 getContentUri()
メソッドを使用しようとしましたが、volumeName
の引数値がわかりませんでした。 「/ mnt/sdcard」と、デバイスをシステムに接続したときに表示されるボリューム名も無駄にしようとしました。
Googleグループに関する同様の質問 を見ましたが、それは解決していません。
編集:Uri.fromFile(new File( "/ mnt/sdcard /"))およびUri.parse(new File( "/ mnt/sdcard")。toString())も使用しようとしましたが、どちらもうまくいきませんでした。
"external"
または"internal"
ここでは内部(システムファイル)はおそらく役に立たないでしょう。
ContentResolver cr = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");
// every column, although that is huge waste, you probably need
// BaseColumns.DATA (the path) only.
String[] projection = null;
// exclude media files, they would be here also.
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
String[] selectionArgs = null; // there is no ? in selection so null here
String sortOrder = null; // unordered
Cursor allNonMediaFiles = cr.query(uri, projection, selection, selectionArgs, sortOrder);
お望みならば .pdf
あなただけがMIMEタイプを確認できます
// only pdf
String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
String[] selectionArgsPdf = new String[]{ mimeType };
Cursor allPdfFiles = cr.query(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder);