我没有使用意图ACTION_GET_CONTENT打开我的自定义文件

时间:2016-03-24 17:32:06

标签: android file select android-intent

我的应用程序无法解决这个问题。

我尝试使用下面的代码选择自定义文件或内容

public void openFolderToFile(Fragment fragment, String filter) {

        int PICKFILE_RESULT_CODE = 1; //101;
        int READ_REQUEST_CODE = 42;
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        // intent.setAction(Intent.ACTION_GET_CONTENT);
        if (intent.hasCategory(Intent.CATEGORY_OPENABLE)) {
            intent.removeCategory(Intent.CATEGORY_OPENABLE);
        }
        if (!intent.hasCategory(Intent.CATEGORY_DEFAULT)) {
            intent.addCategory(Intent.CATEGORY_DEFAULT);
        }
        intent.setFlags(intent.getFlags()
                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
                | Intent.FLAG_GRANT_READ_URI_PERMISSION
                | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION
                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        // Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        // intent.addCategory(Intent.ACTION_OPEN_DOCUMENT);
        // intent.addCategory(Intent.CATEGORY_OPENABLE);
        // intent.addCategory(Intent.CATEGORY_DEFAULT);
        // intent.addCategory(Intent.CATEGORY_BROWSABLE);
        // intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
        // intent.createChooser(target, title)
        filter = filter == null ? "file/*" : filter;
        intent.setType(filter);
        // Uri uri =
        // Uri.parse(Environment.getDownloadCacheDirectory().getPath());
        // intent.setDataAndType(uri, "text/nhpz,text/nhpz2");
        intent.putExtra("CONTENT_TYPE", filter);
        fragment.startActivityForResult(intent, PICKFILE_RESULT_CODE);
        /*
         * fragment.startActivityForResult( intent.createChooser(intent,
         * "Select your file"), PICKFILE_RESULT_CODE);
         */
    }    

这种方法可以这样使用......

String filter = "text/nhpz,text/nhpz2";
openFolderToFile(myFragment, filter);

String filter = "*/nhpz,*/nhpz2";
openFolderToFile(myFragment, filter);

String filter可以是任何其他的托管扩展。

此代码工作正常,但在某些设备中,当我尝试直接从下载文件夹中选择我的自定义文件而不使用外部应用程序时,我的文件无法选择。

我正在尝试任何其他类似代码的组合,当你看到评论时,结果是相同的。

我可以在此过程中使用外部应用程序选择我的文件或内容,但如果我尝试直接选择我的sdcard或下载文件夹我不能,我需要在我的应用程序上进行此操作,因为我无法强制用户安装外部应用程序以与我的应用程序一起使用。

有人有任何想法可以帮助我吗?

0 个答案:

没有答案