【问题标题】:android browse file intent with defined extensionandroid浏览具有定义扩展名的文件意图
【发布时间】:2013-01-31 13:01:43
【问题描述】:

我需要创建将打开文件管理器(如果已安装)的意图,并且我希望文件管理器仅向用户显示 txt 文件,因此用户无法选择具有错误扩展名的文件。

    private static final int FILE_SELECT_CODE = 0;

private void showFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);


    try {
        startActivityForResult(
                Intent.createChooser(intent, "Select txt file"),
                FILE_SELECT_CODE);
    } catch (android.content.ActivityNotFoundException ex) {
        // Potentially direct the user to the Market with a Dialog
        Toast.makeText(this.getActivity(), "Please install a File Manager.", 
                Toast.LENGTH_SHORT).show();
    }
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case FILE_SELECT_CODE:      
    if (resultCode == Activity.RESULT_OK) {  
        // Get the Uri of the selected file 
        Uri uri = data.getData();
        String path = uri.getPath();
        input = new File(path);
        try {
            txtParser = new TxtFileParser(input);
        } catch (FileNotFoundException e) {
            /* Exception handler must be here! */
        }
    }           
    break;
}
    super.onActivityResult(requestCode, resultCode, data);
}

我设法做到了。但是我不知道怎么定义txt扩展。

【问题讨论】:

标签: android file-extension intentfilter


【解决方案1】:

我希望文件管理器只向用户显示 txt 文件,因此用户无法选择扩展名错误的文件

这在字面上是不可能的。欢迎您使用 MIME 类型 text/plain 而不是 */*,但是:

  • 不能保证这只会返回带有.txt 扩展名的文件
  • 无法保证设备上是否有任何应用程序可以处理该 MIME 类型的 ACTION_GET_CONTENT
  • 无法保证任何“文件管理器”都会支持您的 MIME 类型;他们可能会选择显示所有文件

【讨论】:

  • @CommonsWare 你能告诉我在哪里可以从 android 开发文档中确认这一点吗?
  • @jzeferino:抱歉,我不知道你想确认的“这个”是什么。
【解决方案2】:

研究 MaterialFilePicker()。

new MaterialFilePicker().withFilter(Pattern.compile(".*\.txt$")).start();

像上面一样,您可以使用模式匹配来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多