从隐式意图返回 FilePath

Posted

技术标签:

【中文标题】从隐式意图返回 FilePath【英文标题】:Returning FilePath from Implicit-Intent 【发布时间】:2016-07-31 09:06:21 【问题描述】:

要启动文件管理器应用程序以便用户选择他们想要打开的文件,我使用以下代码:

    Intent pickFile = new Intent(Intent.ACTION_GET_CONTENT);
    pickFile.setType("file/*");
    pickFile.addCategory(Intent.CATEGORY_OPENABLE);
    if (pickFile.resolveActivity(getPackageManager()) != null) 
        startActivityForResult(pickFile,FILE_REQUEST_CODE);
     else
        Toast.makeText(getApplicationContext(),"Did not start intent",Toast.LENGTH_SHORT).show();
        return;
    

这很好用。但文件管理器会在根目录中打开。 对于用户来说,这需要点击太多才能获得所需的文件。

那么有没有办法从不同的文件夹而不是根目录启动 Intent?此外,android Developer Guide 似乎没有提供解决方案。

【问题讨论】:

【参考方案1】:

这样试试

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()
    + "/yourFolder/");
intent.setDataAndType(uri, "*/*");
startActivityForResult(Intent.createChooser(intent, "Open folder"),FILE_REQUEST_CODE);

【讨论】:

当我在“打开方式”对话框中选择“文件指挥官”时,应用程序只显示一个空屏幕(即使文件在那里)。但是,当手动导航到它时,它会显示出来,我将能够在我的 android 程序中打开它。这种行为的任何线索?

以上是关于从隐式意图返回 FilePath的主要内容,如果未能解决你的问题,请参考以下文章

隐式意图&显示意图

隐式意图Intent

隐式意图和显式意图

使用隐式意图读取图库文件夹

隐式意图调用系统自带组件的各种Uri总结

[android] 隐式意图激活另外一个activity