我希望我的应用将数据导出到下载目录。
要获取下载目录,我使用此代码
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将无法使用我的应用程序打开。文件关联似乎消失了。
我该如何解决这些问题?
答案 0 :(得分:0)
当我试图获取相应的FileStream时,我得到一个异常,指出找不到指定的文件夹。
如果您获得路径表单意图,它将根据不同的文件管理器以file:/
content:/
开头。
例如,您的路径以file:/
开头:
if(Intent.DataString != null)
{
string path = Intent.DataString;
var fs = new FileStream(path.Remove(0, 6), FileMode.Open);
}
我的第二个问题是,在Windows资源管理器中查看下载文件夹的内容后或设备重置后,myfile.ext将无法使用我的应用程序打开。
Windows资源管理器是文件管理器应用程序吗?某些应用可能无法显示所有可用的应用以打开文件,您可以尝试使用其他文件管理器。