使用活动结果 API 仅从存储中选择文档类型

Ahm*_*lla 5 android onactivityresult registerforactivityresult

我需要让用户能够使用新的Activity Result API从手机存储中仅选择文档类型(例如:pdf、docs、xls) ,但问题是当我像下面的代码一样启动合同时

private val getContent = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
    ...
}

fun pickDocument() = getContent.launch("*/*")
Run Code Online (Sandbox Code Playgroud)

用户可以选择任何文件类型,包括图像、视频……

m3g*_*r0n 13

使用

ActivityResultContracts.OpenDocument() 
Run Code Online (Sandbox Code Playgroud)

代替

ActivityResultContracts.GetContent()
Run Code Online (Sandbox Code Playgroud)

并将所需的 mime 类型传递给:

pickDocumentsContract.launch(arrayOf("mime-type-1","mime-type 2"))
Run Code Online (Sandbox Code Playgroud)

例子:

pickDocumentsContract.launch(arrayOf(
"application/msword", //.doc (Microsoft Word file)
"application/pdf" //.pdf (Pdf file)
))
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到更多 mime 类型:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types