Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我没有使用意图操作\u获取\u内容打开我的自定义文件_Android_File_Select_Android Intent - Fatal编程技术网

Android 我没有使用意图操作\u获取\u内容打开我的自定义文件

Android 我没有使用意图操作\u获取\u内容打开我的自定义文件,android,file,select,android-intent,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)

我的应用程序有一个很大的问题需要解决

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

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);

字符串过滤器可以是任何其他custons扩展

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

我正在尝试任何其他类似代码的组合,当您可以看到注释,结果是相同的

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


有人想帮我吗?

使用真正的MIME类型(Android不支持逗号分隔的列表)或通配符模式(例如
*/*
,因为
文件/*
是非标准的)。删除
setFlags()
,因为所有这些标志都是针对内容的发布者,而不是内容的消费者。我是否需要授予根文件访问权限才能正常工作?如果肯定的话,我如何在不使用根应用程序的情况下通过编程实现这一点?使用真正的MIME类型(Android不支持逗号分隔的列表)或通配符模式(例如
*/*
,因为
文件/*
是非标准的)。删除
setFlags()
,因为所有这些标志都是针对内容的发布者,而不是内容的消费者。我是否需要授予根文件访问权限才能正常工作?如果是的话,我如何在不使用根应用程序的情况下通过编程实现这一点?
String filter = "*/nhpz,*/nhpz2";
openFolderToFile(myFragment, filter);