如何通过intent只选择doc、docx文件?

问题描述 投票:0回答:2

我正在使用 Intent 打开文件管理器,我需要知道如何仅显示 .doc、.docx 文件以供用户选择。如何将 setType 放入意图?` 以下功能用于从文件管理器中选择文件。

    private void showFileChooser() {
    Intent intent = new Intent();
    //sets the select file to all types of files
    intent.setType("application/*");

    //allows to select data and return it
    intent.setAction(Intent.ACTION_GET_CONTENT);
    //starts new activity to select file and return data
    startActivityForResult(Intent.createChooser(intent, "Choose File to Upload.."), PICK_FILE_REQUEST);
}`
android android-intent
2个回答
21
投票

您可以添加多种 MIME 类型,如下所示:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(intent, REQUEST_CODE_OPEN);

以下 mime 类型对应于

.docx
.doc
文件

String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};

0
投票

我知道已经很晚了,但我是为那些仍在寻找相同内容的人而写的。

要在 Android Kotlin 中选择 .docx 文件,您可以使用系统的文件选择器,通过操作 Intent.ACTION_OPEN_DOCUMENT 创建 Intent 并指定适当的 MIME 类型

(application/vnd.openxmlformats-officedocument.wordprocessingml.document)
以仅过滤 Word 文档

fun pickDocxFile() {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
     addCategory(Intent.CATEGORY_OPENABLE)
     type = "application/vnd.openxmlformatsofficedocument.wordprocessingml.document"
    }
 openDocumentResultLauncher.launch(intent)
}

然后,使用

startActivityForResult
启动选取器并在
onActivityResult
方法中检索所选文件的 URI。

private val openDocumentResultLauncher =
    registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
        if (it.resultCode == RESULT_OK) {
            val uri = it?.data // URI of the selected .docx file
            // Process the selected file using the URI
        }
    } 
© www.soinside.com 2019 - 2024. All rights reserved.