android - 奇怪的路径更改和忘记的文件关联
问题描述
我希望我的应用程序将数据导出到下载目录。
要获取下载目录,我使用此代码
string path = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath;
该path
变量具有值"/storage/emulated/0/Download"
。
当我将文件保存到Path.Combine(path, "myfile.ext")
时,文件被正确保存。
为了使用我的应用打开该文件,我创建了一个ImportActivity
带有附加intent-filter
.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="*" />
<data android:mimeType="*/*" />
<data android:pathPattern="/.*\\.ext" />
<data android:scheme="file" />
<data android:scheme="content" />
</intent-filter>
现在,当我使用文件浏览器(三星的那个)并导航到下载目录时,我可以看到我的文件。点击所述文件后,我的文件ImportActivity
被创建,我得到文件路径"/device_storage/Download/myfile.ext"
(不同目录中的相同文件)。当我尝试获取相应的FileStream
时,我得到一个找不到指定文件夹的异常。这是我的第一个问题。
我的第二个问题是,在 Windows 资源管理器中查看下载文件夹的内容或设备重置后,myfile.ext 将无法使用我的应用程序打开。文件关联似乎消失了。
我该如何解决这些问题?
解决方案
当我尝试获取相应的 FileStream 时,出现找不到指定文件夹的异常。
如果您获得路径形式的意图,它将根据不同的文件管理器以file:/
of开头。content:/
例如,您的路径以file:/
:
if(Intent.DataString != null)
{
string path = Intent.DataString;
var fs = new FileStream(path.Remove(0, 6), FileMode.Open);
}
我的第二个问题是,在 Windows 资源管理器中查看下载文件夹的内容或设备重置后,myfile.ext 将无法使用我的应用程序打开。
Windows 资源管理器是文件管理器应用程序吗?某些应用程序可能无法显示所有可用的应用程序来打开文件,您可以尝试使用其他文件管理器。
推荐阅读
- javascript - 浏览器未聚焦时从网站复制到剪贴板
- apache-kafka - 是否可以在 Spring Kafka 中发送将在每条消息(不是每个模板或更高版本)的基础上过期的消息
- reactjs - React.useEffect:尽管来自 ESLint(react-hooks/exhaustive-deps)的警告,组件在依赖数组中使用 window.location.pathname 重新渲染
- node.js - 从公共 API 请求时出现 Express GraphQL 架构错误
- redundancy - 如何检测包含数组的冗余代码?
- node.js - package.json~ 和 package.json.orig 的目的是什么?
- r - 在对称数据框中删除满足条件的行和列
- javascript - 尝试使用用户脚本每 1 秒在画布中按回车键
- amazon-web-services - 在 AppSync/Aurora 中发生查询/突变时发送推送通知/电子邮件
- swift - 尝试访问 rapidAPI yahoo Finance 通过 swift 给我错误 403