我有一个SQLite表,其中包含对我应用程序内部文件的引用。该表维护文件的内部文件名,文件的mime类型(作为文件扩展名,例如" wav"),以及人性化的标题(例如"最初的想法")。 ContentProvider
中的openFile()
查询此表以查找内部文件名,然后向请求它的任何人提供该文件的流。
我想实现OpenableColumns.DISPLAY_NAME
,以便在请求时,ContentProvider可以根据标题+点+扩展名返回有意义的文件名。因此,上面的示例将导致显示名称为" initial ideas.wav"。
由于没有与OpenableColumns.DISPLAY_NAME
直接对应的列,如何设置ContentProvider的query()
方法以返回每条记录的适当计算的DISPLAY_NAME
值,以及可能要求的任何其他常规列?
对于openFile()的其他调用,我通过构造一行OpenableColumns.DISPLAY_NAME
来实现MatrixCursor
;但是,我不知道这是如何工作的,因为我需要为查询返回多行,表中已经存在混合列,并且动态创建了伪列。
因此,我希望能够查询{FilesTable.INTERNAL_FILE_NAME, OpenableColumns.DISPLAY_NAME}
,并从ContentProvider
获得有意义的结果。
答案 0 :(得分:1)
您可以使用这样的SQL查询来创建伪列:
SELECT _id,
InternalFileName,
FileType,
Title,
Title || '.' || FileType AS DisplayName
FROM MyLittleTable