0

メディア以外のファイルを取得するためのこのクエリがあり、カーソルの正しい列を取得したいのですが、列を取得できません

    Uri uri = MediaStore.Files.getContentUri("external");
    String[] projection = null;
    String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
    String[] selectionArgsPdf = new String[]{mimeType};
    String sortOrder = MediaStore.Files.FileColumns.MIME_TYPE; // unordered
    final Cursor allNonMediaFiles = managedQuery(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder);

このコードを使用して列を取得し、その中のすべてのデータを取得していますが、値を返すことはできません

    int file_column_index = allNonMediaFiles.getColumnIndex(MediaStore.Files.FileColumns._ID);
    this.fileCount = allNonMediaFiles.getCount();
    this.pdf = new String[this.fileCount];
    this.pdfPath = new String[this.fileCount];
    for (int i = 0; i < this.fileCount; i++) {
        int pdfColumnIndex = allNonMediaFiles.getColumnIndex(MediaStore.Files.FileColumns.TITLE);
        pdfPath[i] = allNonMediaFiles.getString(pdfColumnIndex);
    }
4

2 に答える 2

1

カーソル項目をトラバースする前に、必ずcursor.moveToFirst()を実行してください。

以下のコードは正常に動作します

最終カーソル allNonMediaFiles = (getBaseContext().getContentResolver()).query(uri, project, selectionMimeType, selectionArgsPdf, sortOrder);

allNonMediaFiles.moveToFirst();

int file_column_index = allNonMediaFiles.getColumnIndex(MediaStore.Files.FileColumns._ID);

...

于 2013-07-10T07:46:41.050 に答える
1

最後に、最初にカーソルを移動するだけでよいことがわかりました

    final Cursor allNonMediaFiles = managedQuery(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder);

    int file_column_index = allNonMediaFiles.getColumnIndex(MediaStore.Files.FileColumns._ID);
    this.fileCount = allNonMediaFiles.getCount();
    this.pdf = new String[this.fileCount];
    this.pdfPath = new String[this.fileCount];

    for (int i = 0; i < this.fileCount; i++) {
        allNonMediaFiles.moveToFirst();
        pdfPath[i] = allNonMediaFiles.getString(1);
    }
于 2013-07-10T07:59:20.260 に答える