【问题标题】:Intents for File Picker文件选择器的意图
【发布时间】:2018-07-31 15:19:13
【问题描述】:

我可以找到一些非常古老的文件选择器示例,但我认为现在可以使用最新的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 新手 - 我想你可以猜到。)

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

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

【问题讨论】:

    标签: android filepicker


    【解决方案1】:

    试试这个

        Intent intent = new Intent();
        intent.setType("application/pdf");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
    

    【讨论】:

      【解决方案2】:

      对于自定义类型,您可以使用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);
      

      【讨论】:

        猜你喜欢
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        相关资源
        最近更新 更多