在文件共享中获取原始文件名Xamarin.forms

时间:2017-10-31 20:20:05

标签: c# xamarin xamarin.forms xamarin.android

我正在尝试从Xamarin.Forms中的其他应用程序实现文件共享。 我在Android实施方面遇到了一些问题。

我指的是https://codemilltech.com/sending-files-to-a-xamarin-forms-app-part-2-android/的代码。

if (Intent.Action == Intent.ActionSend)
            {

            var uriFromExtras = Intent.GetParcelableExtra(Intent.ExtraStream) as Android.Net.Uri;
            string path = Intent.GetParcelableExtra(Intent.ExtraStream).ToString();
            var subject = Intent.GetStringExtra(Intent.ExtraSubject);

            // Get the info from ClipData 
            var pdf = Intent.ClipData.GetItemAt(0);

            // Open a stream from the URI 
            var pdfStream = ContentResolver.OpenInputStream(pdf.Uri);

            // Save it over 
            var memOfPdf = new System.IO.MemoryStream();
            pdfStream.CopyTo(memOfPdf);
            var docsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var filePath = System.IO.Path.Combine(docsPath, "temp");
            System.IO.File.WriteAllBytes(filePath, memOfPdf.ToArray());
            mainForms.ShareFile(memOfPdf.ToArray(), System.IO.Path.GetFileName(path));
        }

我需要从文件管理器中获取共享文件的原始名称。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

  

在文件共享中获取原始文件名Xamarin.forms

以下解决方案可以从文件管理器中获取共享文件的原始名称

if (Intent.Action == Intent.ActionSend)
{
     ClipData clip = Intent.ClipData;
     Uri uri = clip.GetItemAt(0).Uri;

     ICursor returnCursor = ContentResolver.Query(uri, null, null, null, null);
     int nameIndex = returnCursor.GetColumnIndex(OpenableColumns.DisplayName);

     returnCursor.MoveToFirst();

     var fileName = returnCursor.GetString(nameIndex);
     Toast.MakeText(this,"fileName == " + fileName, ToastLength.Short).Show();
}    

当我共享.png文件时,我共享xls文件。