public async Task SaveAndView(string fileName, String contentType, MemoryStream stream, PDFOpenContext context) { string exception = string.Empty; string root = null; if (ContextCompat.CheckSelfPermission(Forms.Context, Manifest.Permission.WriteExternalStorage) != Permission.Granted) { ActivityCompat.RequestPermissions((Activity)Forms.Context, new String[] { Manifest.Permission.WriteExternalStorage }, 1); } if (Android.OS.Environment.IsExternalStorageEmulated) { root = Android.OS.Environment.ExternalStorageDirectory.ToString(); } else { root = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); } Java.IO.File myDir = new Java.IO.File(root + "/PDFFiles"); myDir.Mkdir(); Java.IO.File file = new Java.IO.File(myDir, fileName); if (file.Exists()) { file.Delete(); } try { FileOutputStream outs = new FileOutputStream(file); outs.Write(stream.ToArray()); outs.Flush(); outs.Close(); } catch (Exception e) { exception = e.ToString(); } if (file.Exists() && contentType != "application/html") { string extension = MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString()); string mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension); Intent intent = new Intent(Intent.ActionView); intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask); Android.Net.Uri path = FileProvider.GetUriForFile(Forms.Context, Android.App.Application.Context.PackageName + ".provider", file); intent.SetDataAndType(path, mimeType); intent.AddFlags(ActivityFlags.GrantReadUriPermission); switch (context) { case PDFOpenContext.InApp: Forms.Context.StartActivity(intent); break; case PDFOpenContext.ChooseApp: Forms.Context.StartActivity(Intent.CreateChooser(intent, "Choose App")); break; default: break; } } }
//Method to save document as a file and view the saved document public async Task SaveAndView(string filename, string contentType, MemoryStream stream, PDFOpenContext context) { //Get the root path in iOS device. string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal); string filePath = Path.Combine(path, filename); //Create a file and write the stream into it. FileStream fileStream = File.Open(filePath, FileMode.Create); stream.Position = 0; stream.CopyTo(fileStream); fileStream.Flush(); fileStream.Close(); //Invoke the saved document for viewing UIViewController currentController = UIApplication.SharedApplication.KeyWindow.RootViewController; while (currentController.PresentedViewController != null) { currentController = currentController.PresentedViewController; } UIView currentView = currentController.View; QLPreviewController qlPreview = new QLPreviewController(); QLPreviewItem item = new QLPreviewItemBundle(filename, filePath); qlPreview.DataSource = new PreviewControllerDS(item); currentController.PresentViewController(qlPreview, true, null); }
public async Task SaveAndView(string fileName, string contentType, MemoryStream stream, PDFOpenContext context) { var targetFileName = $"{fileName}{fileExtension}}"; if (System.IO.Path.GetExtension(fileName).Equals(fileExtension, StringComparison.InvariantCultureIgnoreCase)) { targetFileName = $"{System.IO.Path.GetFileNameWithoutExtension(fileName)}{fileExtension}}"; } var file = await CreateToDownloadFolderAsync(targetFileName); await WriteBufferToFileAsync(file, memoryStream); switch (context) { case PDFOpenContext.InApp: await LaunchInAppAsync(); break; default: case PDFOpenContext.ChooseApp: await LaunchDefaultPdfAppAsync(file); break; } }
public Task SaveAndView(string fileName, string contentType, MemoryStream stream, PDFOpenContext context) { //throw new NotImplementedException(); return(Task.CompletedTask); }