为了在Android 11上访问外部存储,需要使用新的API来构建一个非常特定的意图。以下是代码示例:
// ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
// browser.
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
// Filter to only show results that can be "opened", such as a
// file (as opposed to a list of contacts or timezones).
addCategory(Intent.CATEGORY_OPENABLE)
// Filter to show only images, using the image MIME data type.
// If one wanted to search for ogg vorbis files, the type would be "audio/ogg".
// To search for all documents available via installed storage providers,
// it would be "*/*".
type = "image/*"
}
startActivityForResult(intent, READ_REQUEST_CODE)
此代码示例中,我们使用Intent.ACTION_OPEN_DOCUMENT
创建一个意图来选择一个文件。该意图包含一个Intent.CATEGORY_OPENABLE
过滤器,以确保该文件可以被打开。另外,我们还需要指定我们要搜索的文件类型,例如过滤器中的'image/*”,该意图将打开系统的文件浏览器并让用户选择要打开的文件。