我正在开发一个使用自定义文件类型的应用程序,我已经弄清楚如何将我的应用程序注册到系统,以便能够使用意图过滤器打开这种类型的文件,并且我的应用程序也将显示在应用程序列表中可用于在尝试打开此类附件时从内置电子邮件客户端打开此文件。问题是从文件浏览器传入时处理打开文件的代码在从电子邮件客户端传入时不起作用。在选择正确类型的文件后,从文件浏览器调用 Activity 时,我使用的代码可以正常工作:
Intent i = getIntent();
if(i == null) return;
Uri u = i.getData();
if(u == null) return;
String filePath = u.getEncodedPath();
if(filePath == null) return;
Util.loadOTDRFile(filePath);
从文件浏览器加载时,我在“filePath”字符串中得到的内容类似于“mnt/storage/Android/data/com.fiberdroid.001/downloads/filename.trc... loadOTDRFile() 函数成功。
但是,当我从电子邮件客户端打开相同类型的文件时,该代码中的 filePath 变量最终类似于以下内容:“//mail/parts/4217”未加载,我的加载函数返回未找到的文件错误。
以下是 loadOTDRFile() 函数的相关代码:
File file = new File(filePath);
InputStream is;
try
{
is = new FileInputStream(filePath);
}
catch(FileNotFoundException e)
{
return D.ERROR_FILENOTFOUND;
}
我想我的问题是“//mail/parts/4217”是什么样的路径,为什么我不能打开它?
谢谢你。