Android 奇怪的路径更改和遗忘的文件关联
我希望我的应用程序将数据导出到下载目录 要获取下载目录,我使用以下代码Android 奇怪的路径更改和遗忘的文件关联,android,xamarin.android,file-handling,intentfilter,Android,Xamarin.android,File Handling,Intentfilter,我希望我的应用程序将数据导出到下载目录 要获取下载目录,我使用以下代码 string path=Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath path变量的值为“/storage/simulated/0/Download” 当我将文件保存到Path.Combine(路径,“myfile.ext”)时,文件保存正确 为了
string path=Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath代码>
path
变量的值为“/storage/simulated/0/Download”
当我将文件保存到Path.Combine(路径,“myfile.ext”)
时,文件保存正确
为了用我的应用程序打开该文件,我创建了一个带有附加的意图过滤器的活动ImportActivity
<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>
现在,当我使用文件浏览器(三星的)并导航到下载目录时,我可以看到我的文件。
点击所述文件后,将创建我的导入性
,并获得文件路径“/device\u storage/Download/myfile.ext”
(不同目录中的相同文件)。
当我试图获取相应的FileStream
时,我得到一个异常,指定的文件夹找不到。
这是我的第一个问题
我的第二个问题是,在Windows资源管理器中查看下载文件夹的内容或设备重置后,myfile.ext将无法随我的应用打开。文件关联似乎消失了
如何解决这些问题
当我试图获取相应的FileStream时,会出现一个异常,即找不到指定的文件夹
如果您获得路径表单意图,它将根据不同的文件管理器以内容的文件开始
例如,您可以使用路径以文件开始:/
:
if(Intent.DataString != null)
{
string path = Intent.DataString;
var fs = new FileStream(path.Remove(0, 6), FileMode.Open);
}
我的第二个问题是,在Windows资源管理器中查看下载文件夹的内容或设备重置后,myfile.ext将无法随我的应用打开
Windows资源管理器是文件管理器应用程序吗?某些应用程序可能无法显示所有可用的应用程序来打开文件,您可以尝试使用其他文件管理器。我通过Intent.GetParcelableExtra(Intent.ExtraStream)
获取文件的位置,并将其强制转换为Uri
对象。我认为我使用该对象的path
属性获得了正确的路径。我将查看Intent.DataString
属性的内部。当我在我的windows机器上查看手机的文件系统并打开下载目录时,从那时起,我的应用程序将不会打开该文件。我不必打开文件。只要列出目录中的文件就足够了。