1

通过我的应用程序,用户可以从文件管理器中选择一个文件并处理选择的文件(示例:PDF 文档)以进行其他步骤,例如打印或发送电子邮件。

为此,我使用下面的代码来显示意图,用户可以从中选择文件管理器选项中的文件。

protected void showFileChooser(String title, String type) {
        Log.i(TAG, "FileChooserActivity showFileChooser(title,type)");

        if (TextUtils.isEmpty(title)) title = getString(R.string.select_file);      
        if (TextUtils.isEmpty(type)) type = "*/*";  

        // Implicitly allow the user to select a particular kind of data
        final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 

        // Specify the MIME data type filter (Must be lower case)
        intent.setType(type.toLowerCase()); 

        // Only return URIs that can be opened with ContentResolver
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        // Display intent chooser
        try {
            startActivityForResult(
                    Intent.createChooser(intent, title),6384);
        } catch (android.content.ActivityNotFoundException e) {

            Log.i(TAG,"FileChooserActivity showFileChooser(title,type) Exception" +Log.getStackTraceString(e));
            onFileError(e);
        }
    }

Android Kitkat 版本(4.4)中的问题:

使用上面的代码,我可以从 android 4.3 和除 Android 4.4 之外的所有 android 版本的文件管理器(即子文件夹和根文件夹)中访问所有文件。

在 Android 4.4 中,我可以从根文件夹访问文件,而我无法从子文件夹访问文件。我得到java.io.FileNotFoundException了例外。

注意:我安装了Astro 文件管理器,通过它我可以访问 Android 4.4 中的根文件夹和子文件夹。但我无法通过 Android 的默认文件管理器访问子文件夹文件。

4

0 回答 0