startActivityForResult在Android版本4.4(Kitkat版本)中不起作用

时间:2014-06-05 12:18:53

标签: android android-intent android-4.4-kitkat android-file android-fileprovider

通过我的应用程序,用户可以从文件管理器中选择一个文件,并处理选择的文件(例如: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中的文件管理器(即子文件夹&root文件夹)和除Android 4.4之外的所有Android版本的所有文件。

在Android 4.4中,我可以从根文件夹访问文件,因为我无法从子文件夹访问文件。我将java.io.FileNotFoundException视为例外。

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

0 个答案:

没有答案