文件选取器的意图

时间:2018-07-31 15:19:13

标签: android filepicker

我可以找到一些非常古老的文件选择器样本,但是现在可以使用更新的Intent来实现。

我要加载和保存文件。这将是一个文本文件,但扩展名为.mfl(我正在使用的扩展名为文件)。

我已经看到某人的图像代码(但仅用于加载):

Intent intent = new Intent();
// Show only images, no videos or anything else
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// Always show the chooser (if there are multiple options available)
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);

我需要在setType中仅看到我的.mfl文件吗?

我已经有onActivityResult做其他事情,因此需要创建自己的requestCode。我在想

int PICK_MYFILE_REQUEST = 1001;

所以我认为我的onActivityResult应该看起来像这样:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(/* doing my other stuff */){
    } else if (requestCode == PICK_MYFILE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

        Uri uri = data.getData();

        try {
            /* load the file */
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

如您所见,我想我可能快到了,但还不确定我要做什么。 (我是Android新手,我想你可以猜到。)

这大致正确吗?我需要做什么才能使它正常工作?

此外,如何修改它以获取文件保护对话框?

2 个答案:

答案 0 :(得分:0)

尝试一下

logger.error("Something went wrong", exception);

答案 1 :(得分:0)

对于自定义类型,您可以使用application/mfl,因此您的Intent应该为:

//Use ACTION_OPEN_DOCUMENT to get read/write permission
Intent intent = new Intent(Intent.Intent.ACTION_OPEN_DOCUMENT);
//"application/mfl" to request only .mfl files
intent.setType("application/mfl");
//Request readable files
intent.addCategory(Intent.CATEGORY_OPENABLE)
startActivityForResult(Intent.createChooser(intent, "Select File"),PICK_MYFILE_REQUEST);