C# 如何获取文件的路径?

C# 如何获取文件的路径?,c#,android,xamarin,C#,Android,Xamarin,我试图获取任何类型文件的路径,但在我不知道为什么它只适用于图像的情况下,任何其他文件扩展名路径总是空的。这是我的密码: private string GetPath(Android.Net.Uri uri) { string path; string[] projection = new[] { Android.Provider.MediaStore.MediaColumns.Data }; using (ICursor cursor =

我试图获取任何类型文件的路径,但在我不知道为什么它只适用于图像的情况下,任何其他文件扩展名路径总是空的。这是我的密码:

private string GetPath(Android.Net.Uri uri)
    {
        string path;
        string[] projection = new[] { Android.Provider.MediaStore.MediaColumns.Data };
        using (ICursor cursor = ManagedQuery(uri, projection, null, null, null))
        {
            if (cursor != null)
            {
                int columnIndex = cursor.GetColumnIndexOrThrow(Android.Provider.MediaStore.MediaColumns.Data);
                cursor.MoveToFirst();
                path = cursor.GetString(columnIndex);                    
            }
        }
        return path;
    }
我做错什么了吗?或者有其他方法吗

谢谢大家!

Uri有一个函数getPath(),其调用方式如下:

uri.getPath()
你可以把它转换成字符串

根据这篇文章的建议:

编辑

在Xamarin中,此函数不存在

根据这篇文章,这应该很容易:

它使用Xamarin的官方文档:


多亏了这位天才ryupold,才有了解决方案


谢谢您的回答:)但我想知道是否有任何方法可以为所有文件扩展名执行通用功能,而不仅仅是特定类型的文件扩展名(Android.Provider.MediaStore.Audio.Media.InterfaceConsts.Data仅适用于音频文件,Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data适用于图像文件)如果你想得到所有的文件,我建议这一页:这将列出一个特定目录中的每个文件。