2017-05-09 8 views
-1

を探します。しかし、クエリ結果はpdf.doc.xlsだけであり、他のものではありません。私はかなり混乱しています。私は答えの多くは一日を過ごした後、私は次のコードのように、---- [doc.docx.xls.xlsx.ppt.pptx.pdf]などのオフィスファイル

private void doSearch() { 
    String[] projection = new String[]{ 
      MediaStore.Files.FileColumns.DATA, 
      MediaStore.Files.FileColumns.TITLE, 
      MediaStore.Files.FileColumns.MIME_TYPE}; 

    String selection = MediaStore.Files.FileColumns.MIME_TYPE + " = ? " 
      + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? " 
      + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? " 
      + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? " 
      + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? " 
      + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? " 
      + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "; 

    String[] selectionArgs = new String[]{ 
      "application/vnd.openxmlformats-officedocument.presentationml.presentation", 
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 
      "application/vnd.ms-powerpoint", 
      "application/msword", 
      "application/pdf", 
      "application/vnd.ms-excel"}; 

    Cursor cursor = getContentResolver().query(MediaStore.Files.getContentUri("external"), 
      projection, 
      selection, 
      selectionArgs, 
      MediaStore.Files.FileColumns.DATE_MODIFIED + " desc"); 

    String fileName; 
    String filePath; 
    while (cursor.moveToNext()) { 
     String type = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.MIME_TYPE)); 
     fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.TITLE)); 
     filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA)); 
     Log.e("ryze_text", fileName + " -- " + type + "--" + filePath);//Here is the result 

    } 

    cursor.close(); 
    cursor = null; 
} 

答えて

0

欲しいものではありません見つける、私は完全な検索

を示すためにnullに2つのパラメータを変更された最初の

ログで代替method.Lookを見つけました

getContentResolver().query(MediaStore.Files.getContentUri("external"), 
      projection, 
//    selection, 
//    selectionArgs, 
      null,null, 
      MediaStore.Files.FileColumns.DATE_MODIFIED + " desc"); 

Log.e("ryze_text", fileName + " -- " + type + "--" + filePath); 

上記のコードを使用して、私は次のログ

を得ました
20160423.xlsx -- null--/storage/emulated/0/tencent/MicroMsg/Download/20160423.xlsx 

なぜmimeTypeがnullであるのか分かりませんが、私はすでにpptx、xlsx、docxが必要なものを手に入れることができます。

+0

これは、リストされたものだけでなく、**すべての**ファイルを返します。 –

+0

はい、今度は、結果のサフィックスをフィルタリングして、必要なファイルを取得できます –

関連する問題