Xamarin Android: How to Share PDF File From Assets Folder? Via WhatsApp I get message that the file you picked was not a document

Viewed 2362

I use Xamarin Android. I have a PDF File stored in Assets folder from Xamarin Android.

enter image description here

I want to share this file in WhatsApp, but I receive the message:

The file you picked was not a document.

enter image description here

I tried two ways:

This is the first way

var SendButton = FindViewById<Button>(Resource.Id.SendButton);
SendButton.Click += (s, e) =>

                {
                ////Create a new file in the exteranl storage and copy the file from assets folder to external storage folder
                Java.IO.File dstFile = new Java.IO.File(Environment.ExternalStorageDirectory.Path + "/my-pdf-File--2017.pdf");
                dstFile.CreateNewFile();

                var inputStream = new FileInputStream(Assets.OpenFd("my-pdf-File--2017.pdf").FileDescriptor);
                var outputStream = new FileOutputStream(dstFile);
                CopyFile(inputStream, outputStream);

                //to let system scan the audio file and detect it
                Intent intent = new Intent(Intent.ActionMediaScannerScanFile);
                intent.SetData(Uri.FromFile(dstFile));
                this.SendBroadcast(intent);

                //share the Uri of the file
                var sharingIntent = new Intent();
                sharingIntent.SetAction(Intent.ActionSend);
                sharingIntent.PutExtra(Intent.ExtraStream, Uri.FromFile(dstFile));
                sharingIntent.SetType("application/pdf");

                this.StartActivity(Intent.CreateChooser(sharingIntent, "@string/QuotationShare"));
            };

This is the second

//Other way

            var SendButton2 = FindViewById<Button>(Resource.Id.SendButton2);
            SendButton2.Click += (s, e) =>
            {

                Intent intent = new Intent(Intent.ActionSend);
                intent.SetType("application/pdf");

                Uri uri = Uri.Parse(Environment.ExternalStorageDirectory.Path + "/my-pdf-File--2017.pdf");
                intent.PutExtra(Intent.ExtraStream, uri);

                try
                {
                    StartActivity(Intent.CreateChooser(intent, "Share PDF file"));
                }
                catch (System.Exception ex)
                {
                    Toast.MakeText(this, "Error: Cannot open or share created PDF report. " + ex.Message, ToastLength.Short).Show();
                }
            };

In other way, when I share via email, the PDF file is sent empty (corrupt file)

What can I do?

2 Answers
Related