public Task SelectFileAsync() { var activity = (MainActivity)CrossCurrentActivity.Current.Activity; var hasStorageWritePermission = !_cameraPermissionsDenied && HasPermission(Manifest.Permission.WriteExternalStorage); var additionalIntents = new List <IParcelable>(); if (activity.PackageManager.HasSystemFeature(PackageManager.FeatureCamera)) { var hasCameraPermission = !_cameraPermissionsDenied && HasPermission(Manifest.Permission.Camera); if (!_cameraPermissionsDenied && !hasStorageWritePermission) { AskPermission(Manifest.Permission.WriteExternalStorage); return(Task.FromResult(0)); } if (!_cameraPermissionsDenied && !hasCameraPermission) { AskPermission(Manifest.Permission.Camera); return(Task.FromResult(0)); } if (!_cameraPermissionsDenied && hasCameraPermission && hasStorageWritePermission) { try { var file = new Java.IO.File(activity.FilesDir, "temp_camera_photo.jpg"); if (!file.Exists()) { file.ParentFile.Mkdirs(); file.CreateNewFile(); } var outputFileUri = FileProvider.GetUriForFile(activity, "com.x8bit.bitwarden.fileprovider", file); additionalIntents.AddRange(GetCameraIntents(outputFileUri)); } catch (Java.IO.IOException) { } } } var docIntent = new Intent(Intent.ActionOpenDocument); docIntent.AddCategory(Intent.CategoryOpenable); docIntent.SetType("*/*"); var chooserIntent = Intent.CreateChooser(docIntent, AppResources.FileSource); if (additionalIntents.Count > 0) { chooserIntent.PutExtra(Intent.ExtraInitialIntents, additionalIntents.ToArray()); } activity.StartActivityForResult(chooserIntent, Constants.SelectFileRequestCode); return(Task.FromResult(0)); }
public void Share(ViewRoutePoint vpoint, string packageName) { if ((vpoint != null) && (!string.IsNullOrEmpty(vpoint.Id))) { string pointCoordinates = $"{vpoint.Latitude.ToString(CultureInfo.InvariantCulture)},{vpoint.Longitude.ToString(CultureInfo.InvariantCulture)}"; Intent share = new Intent(); share.SetType("text/plain"); if (vpoint.MediaObjectPaths.Count > 1) { share = new Intent(Intent.ActionSendMultiple); share.SetType("image/*"); List <Uri> uris = new List <Uri>(); foreach (var path in vpoint.MediaObjectPaths) { Java.IO.File file = new Java.IO.File(path); var fileUri = FileProvider.GetUriForFile(Android.App.Application.Context, Android.App.Application.Context.PackageName + ".fileprovider", file); uris.Add(fileUri); } share.PutParcelableArrayListExtra(Intent.ExtraStream, uris.ToArray()); } else if (vpoint.MediaObjectPaths.Count == 1) { share = new Intent(Intent.ActionSend); share.SetType("image/*"); Java.IO.File file = new Java.IO.File(vpoint.MediaObjectPaths[0]); var fileUri = FileProvider.GetUriForFile(Android.App.Application.Context, Android.App.Application.Context.PackageName + ".fileprovider", file); share.PutExtra(Intent.ExtraStream, fileUri); } else if (vpoint.MediaObjectPaths.Count == 0) { } share.SetFlags(ActivityFlags.NewTask); share.PutExtra(Intent.ExtraText, $"{pointCoordinates}\n{vpoint.Description}"); share.PutExtra(Intent.ExtraSubject, $"{pointCoordinates}\n{vpoint.NameText}"); share.PutExtra(Intent.ExtraAllowMultiple, true); if (!string.IsNullOrEmpty(packageName)) { AddComponentNameToIntent(packageName, share); } try { Android.App.Application.Context.StartActivity(share); } catch (Exception e) { HandleError.Process("CommonShareService", "Share point", e, false); } } }
public void Save(string fileName, String contentType, MemoryStream stream, Context context) { string exception = string.Empty; string root = null; if (Android.OS.Environment.IsExternalStorageEmulated) { root = Android.OS.Environment.ExternalStorageDirectory.ToString(); } else { root = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); } Java.IO.File myDir = new Java.IO.File(root + "/Syncfusion"); 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") { Android.Net.Uri path = Android.Net.Uri.FromFile(file); string extension = Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString()); string mimeType = Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension); Intent intent = new Intent(Intent.ActionView); intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask); path = FileProvider.GetUriForFile(context, Android.App.Application.Context.PackageName + ".provider", file); intent.SetDataAndType(path, mimeType); intent.AddFlags(ActivityFlags.GrantReadUriPermission); context.StartActivity(Intent.CreateChooser(intent, "Choose App")); } }
//Result protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { try { base.OnActivityResult(requestCode, resultCode, data); //If its from Camera or Gallery if (requestCode == 500) { Uri uri = data.Data; var filepath = Methods.AttachmentFiles.GetActualPathFromFile(this, uri); PickiTonCompleteListener(filepath); } else if (requestCode == CropImage.CropImageActivityRequestCode) { var result = CropImage.GetActivityResult(data); if (resultCode == Result.Ok) { if (result.IsSuccessful) { var resultUri = result.Uri; if (!string.IsNullOrEmpty(resultUri.Path)) { PathImage = resultUri.Path; File file2 = new File(resultUri.Path); var photoUri = FileProvider.GetUriForFile(this, PackageName + ".fileprovider", file2); Glide.With(this).Load(photoUri).Apply(new RequestOptions()).Into(ImgGallery); //GlideImageLoader.LoadImage(this, PathImage, ImgGallery, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); } else { Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long).Show(); } } else { Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long) .Show(); } } } } catch (Exception e) { Console.WriteLine(e); } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.AutoUpdateLayout); // Create your application here progressBar = FindViewById <ProgressBar>(Resource.Id.progressBar1); progressBar2 = FindViewById <ProgressBar>(Resource.Id.progressBar2); progressBar.Max = 100; progressBar2.Max = 100; FileDelete(); //CheckUpdate(); var url = new System.Uri(string.Format(@"{0}{1}", GlobalSetting.Instance.MOBILEEndpoint.ToString(), @"/com.daesangit.barcodeinspection.apk")); Task task = Task.Factory.StartNew(async() => { await DownloadFileAsync(url); var child = Task.Factory.StartNew(() => { if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.N) { Intent intent = new Intent(Intent.ActionInstallPackage); intent.SetDataAndType(FileProvider.GetUriForFile(this.ApplicationContext, "com.daesangit.barcodeinspection.fileprovider", new File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads) + "/com.daesangit.barcodeinspection.apk")), "application/vnd.android.package-archive"); intent.SetFlags(ActivityFlags.GrantReadUriPermission | ActivityFlags.NewTask); StartActivity(intent); } else { Intent intent = new Intent(Intent.ActionView); intent.SetDataAndType(Android.Net.Uri.FromFile(new File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads) + "/com.daesangit.barcodeinspection.apk")), "application/vnd.android.package-archive"); intent.SetFlags(ActivityFlags.NewTask); StartActivity(intent); } }, TaskCreationOptions.AttachedToParent); var third = Task.Factory.StartNew(() => { OnUpdateCompleted?.Invoke(); this.Finish(); }, TaskCreationOptions.AttachedToParent); }); task.Wait(); }
//Method to save document as a file in Android and view the saved document public async Task SaveAndView(string fileName, String contentType, MemoryStream stream) { string exception = string.Empty; string root = null; if (ContextCompat.CheckSelfPermission(Forms.Context, Manifest.Permission.WriteExternalStorage) != Permission.Granted) { ActivityCompat.RequestPermissions((Android.App.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 + "/VDTSReports"); 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 = Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString()); string mimeType = Android.Webkit.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); Forms.Context.StartActivity(Intent.CreateChooser(intent, "Choose App")); } }
/// <summary> /// 高安卓版本安装APK /// </summary> /// <param name="fileSavePath"></param> private void InstallPackgeAPI28(string fileSavePath) { Java.IO.File file = new Java.IO.File(Uri.Parse(fileSavePath).Path); string filePath = file.AbsolutePath; StartInstallintent = new Intent(Intent.ActionView); StartInstallintent.SetFlags(ActivityFlags.NewTask); var provider = PackageName + ".fileprovider"; Uri data = FileProvider.GetUriForFile(this, provider, new Java.IO.File(filePath)); StartInstallintent.SetFlags(ActivityFlags.GrantReadUriPermission);// 给目标应用一个临时授权 StartInstallintent.SetDataAndType(data, "application/vnd.android.package-archive"); ChickPermission(); }
//Result protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { try { base.OnActivityResult(requestCode, resultCode, data); //If its from Camera or Gallery if (requestCode == CropImage.CropImageActivityRequestCode) { var result = CropImage.GetActivityResult(data); if (resultCode == Result.Ok) { if (result.IsSuccessful) { var resultUri = result.Uri; if (!string.IsNullOrEmpty(resultUri.Path)) { EventPathImage = resultUri.Path; File file2 = new File(resultUri.Path); var photoUri = FileProvider.GetUriForFile(this, PackageName + ".fileprovider", file2); Glide.With(this).Load(photoUri).Apply(new RequestOptions()).Into(ImageEvent); } else { Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long)?.Show(); } } else { Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long)?.Show(); } } } else if (requestCode == 502 && resultCode == Result.Ok) // Location { var placeAddress = data.GetStringExtra("Address") ?? ""; //var placeLatLng = data.GetStringExtra("latLng") ?? ""; if (!string.IsNullOrEmpty(placeAddress)) { TxtLocation.Text = placeAddress; } } } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
/// <summary> /// 跳转到相机拍照 /// </summary> /// <param name="activity"></param> /// <param name="requestCode">返回结果时的请求码</param> /// <param name="file">照片存放路径</param> public static void StartCameraForResult(Activity activity, int requestCode, JFile?file = null) { file ??= new JFile(Path.GetTempFileName()); // https://github.com/xamarin/Essentials/blob/1.5.3.2/Xamarin.Essentials/Types/FileProvider.android.cs var imageUri = FileProvider.GetUriForFile(activity, GetAuthority(activity), file); #if DEBUG Android.Util.Log.Debug(nameof(Activity), $"StartCameraForResult imageUri: {imageUri}"); #endif var intent = new Intent(MediaStore.ActionImageCapture); intent.PutExtra(MediaStore.ExtraOutput, imageUri); intent.AddFlags(ActivityFlags.GrantWriteUriPermission); activity.StartActivityForResult(intent, requestCode); }
public void PlayVideo(string path) { File videoFile = new File(path); Uri fileUri = FileProvider.GetUriForFile(CrossCurrentActivity.Current.AppContext, "com.arsbars.Reminder.fileprovider", videoFile); Intent intent = new Intent(Intent.ActionView); intent.SetDataAndType(fileUri, "video/*"); intent.AddFlags(ActivityFlags.GrantReadUriPermission); if (CrossCurrentActivity.Current.Activity is MainActivity mainActivity) { mainActivity.StartActivity(intent); } }
// Replace the contents of a view (invoked by the layout manager) public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { try { if (viewHolder is AllMediaAdapterViewHolder holder) { var item = MediaList[position]; if (item != null) { if (item.Full.Contains("http")) { GlideImageLoader.LoadImage(ActivityContext, item.Full, holder.Image, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); } else { if (item.IsVideo == "1" && string.IsNullOrEmpty(item.Full) && !new File(item.Full).Exists()) { File file2 = new File(item.Full); var photoUri = FileProvider.GetUriForFile(ActivityContext, ActivityContext.PackageName + ".fileprovider", file2); Glide.With(ActivityContext) .AsBitmap() .Apply(new RequestOptions().Placeholder(Resource.Drawable.ImagePlacholder).Error(Resource.Drawable.ImagePlacholder)) .Load(photoUri) // or URI/path .Into(holder.Image); //image view to set thumbnail to } else { Glide.With(ActivityContext).Load(new File(item.Full)).Apply(new RequestOptions().Placeholder(Resource.Drawable.ImagePlacholder).Error(Resource.Drawable.ImagePlacholder)).Into(holder.Image); } } GlideImageLoader.LoadImage(ActivityContext, item.Full, holder.Image, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); if (!string.IsNullOrEmpty(item.VideoFile) || item.IsVideo == "1") { holder.PlayIcon.Visibility = ViewStates.Visible; } else { holder.PlayIcon.Visibility = ViewStates.Gone; } } } } catch (Exception exception) { Console.WriteLine(exception); } }
// Does some Android magic to make the acces work. static Uri GetPathUri(Context context, string filePath) { Uri uri; if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { string packageName = context.PackageName; uri = FileProvider.GetUriForFile(context, packageName + ".provider", new File(filePath)); } else { uri = Uri.FromFile(new File(filePath)); } return(uri); }
protected virtual void ShowFileFromLocalPath(string path, bool delete = false) { Java.IO.File f = new Java.IO.File(path); Uri uri; if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { uri = Uri.Parse("content://" + path); } else { Java.IO.File file = new Java.IO.File(path); file.SetReadable(true); //Android.Net.Uri uri = Android.Net.Uri.Parse("file://" + filePath); uri = Uri.FromFile(file); } var uri1 = FileProvider.GetUriForFile(MainActivity.MainActivityInstance.ApplicationContext, MainActivity.MainActivityInstance.ApplicationContext.PackageName + ".provider", f); var t = uri1.Authority; Intent intent = new Intent(Intent.ActionView); intent.SetDataAndType(uri1, GetMimeType(uri1, path)); intent.AddFlags(ActivityFlags.GrantReadUriPermission); intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask); try { Application.Context.StartActivity(intent); } catch (ActivityNotFoundException e) { } catch (System.Exception) { throw; } finally { if (delete) { Task.Delay(2000); File.Delete(path); } } }
//Result protected override async void OnActivityResult(int requestCode, Result resultCode, Intent data) { try { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == 108 || requestCode == CropImage.CropImageActivityRequestCode && resultCode == Result.Ok) { var result = CropImage.GetActivityResult(data); if (result.IsSuccessful) { ResultPathImage = result.Uri.Path; if (!string.IsNullOrEmpty(ResultPathImage)) { //wael File file2 = new File(ResultPathImage); var photoUri = FileProvider.GetUriForFile(this, PackageName + ".fileprovider", file2); Glide.With(this).Load(photoUri).Apply(new RequestOptions().CircleCrop()).Into(UserImage); if (Methods.CheckConnectivity()) { await Task.Run(async() => { (int apiStatus, var respond) = await RequestsAsync.User.SaveImageUser(ResultPathImage).ConfigureAwait(false); }); } else { Toast.MakeText(this, GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short).Show(); } } else { Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long).Show(); } } else { Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long).Show(); } } } catch (Exception e) { Console.WriteLine(e); } }
//Result protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { try { base.OnActivityResult(requestCode, resultCode, data); switch (requestCode) { case CropImage.CropImageActivityRequestCode when resultCode == Result.Ok: { var result = CropImage.GetActivityResult(data); switch (result.IsSuccessful) { case true: { var resultUri = result.Uri; switch (string.IsNullOrEmpty(resultUri.Path)) { case false: { ImagePath = resultUri.Path; File file2 = new File(resultUri.Path); var photoUri = FileProvider.GetUriForFile(this, PackageName + ".fileprovider", file2); Glide.With(this).Load(photoUri).Apply(new RequestOptions()).Into(Image); //GlideImageLoader.LoadImage(this, resultUri.Path, Image, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); break; } default: Toast.MakeText(this, GetText(Resource.String.Lbl_something_went_wrong), ToastLength.Long)?.Show(); break; } break; } } break; } } } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (resultCode == Result.Ok && (requestCode == Constants.SelectFileRequestCode || requestCode == Constants.SaveFileRequestCode)) { Android.Net.Uri uri = null; string fileName = null; if (data != null && data.Data != null) { uri = data.Data; fileName = AndroidHelpers.GetFileName(ApplicationContext, uri); } else { // camera var file = new Java.IO.File(FilesDir, "temp_camera_photo.jpg"); uri = FileProvider.GetUriForFile(this, "com.x8bit.bitwarden.fileprovider", file); fileName = $"photo_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}.jpg"; } if (uri == null) { return; } if (requestCode == Constants.SaveFileRequestCode) { _messagingService.Send("selectSaveFileResult", new Tuple <string, string>(uri.ToString(), fileName)); return; } try { using (var stream = ContentResolver.OpenInputStream(uri)) using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); _messagingService.Send("selectFileResult", new Tuple <byte[], string>(memoryStream.ToArray(), fileName ?? "unknown_file_name")); } } catch (Java.IO.FileNotFoundException) { return; } } }
public void ShareFile(string title, string message, string filePath) { var extension = Path.GetExtension(filePath.ToLower()); string contentType; // Map ContentTypes switch (extension) { case ".pdf": contentType = "application/pdf"; break; case ".png": contentType = "image/png"; break; default: contentType = "application/octetstream"; break; } // Use file provider to get file URI var fileUri = FileProvider.GetUriForFile(Android.App.Application.Context, Android.App.Application.Context.ApplicationContext.PackageName + ".fileprovider", new Java.IO.File(filePath)); //if (!filePath.StartsWith("file://")) //{ // filePath = string.Format("file://{0}", filePath); //} //var fileUri = Android.Net.Uri.Parse(filePath); var intent = new Intent(); intent.SetAction(Intent.ActionSend); intent.SetFlags(ActivityFlags.ClearTop); intent.SetFlags(ActivityFlags.NewTask); intent.SetType(contentType); intent.PutExtra(Intent.ExtraStream, fileUri); intent.AddFlags(ActivityFlags.GrantReadUriPermission); var chooserIntent = Intent.CreateChooser(intent, title ?? string.Empty); chooserIntent.SetFlags(ActivityFlags.ClearTop); chooserIntent.SetFlags(ActivityFlags.NewTask); Android.App.Application.Context.StartActivity(chooserIntent); }
public void lookCameraIntent() { Android.Net.Uri photoURI; Intent takePictureIntent = new Intent(MediaStore.ActionImageCapture); if (takePictureIntent.ResolveActivity(PackageManager) != null) { Java.IO.File photoFile = null; photoFile = createImageFile(); photoURI = FileProvider.GetUriForFile(this, "com.companyname.TOH19.fileprovider", photoFile); takePictureIntent.PutExtra(MediaStore.ExtraOutput, photoURI); StartActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); //1 = REQUEST_TAKE_PHOTO } }
public void OpenFile(string filePath) { var localFile = new Java.IO.File(filePath); // getting files from path var uri = FileProvider.GetUriForFile(MainActivity.Current, "com.gpoAplired.bcmweb.provider", localFile); Intent intent = new Intent(Intent.ActionView); intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask); var extension = MimeTypeMap.GetFileExtensionFromUrl(filePath); var mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension.ToLower()); intent.AddFlags(ActivityFlags.GrantReadUriPermission); intent.SetDataAndType(uri, mimeType); MainActivity.Current.StartActivity(intent); }
private void TakePhotoFromCamera() { if (!IsThereAnAppToTakePictures()) { return; } CreateDirectoryForPictures(); var intent = new Intent(MediaStore.ActionImageCapture); _photoUri = FileProvider.GetUriForFile(this, "IndecoSoft.Familia.fileprovider", CreateImageFile()); intent.PutExtra(MediaStore.ExtraOutput, _photoUri); StartActivityForResult(intent, Constants.RequestCamera); }
private void TakeAPicture_Click(object sender, System.EventArgs e) { Intent intent = new Intent(MediaStore.ActionImageCapture); directory = new AndroidFile(Environment.ExternalStorageDirectory, "grouph"); if (!directory.Exists()) { directory.Mkdirs(); } file = new AndroidFile(directory, UniqueImgFileName()); intent.PutExtra(MediaStore.ExtraOutput, FileProvider.GetUriForFile(this.Context, _providerName, file)); intent.SetFlags(ActivityFlags.GrantWriteUriPermission); StartActivityForResult(intent, 0); }
public Task Show(string title, string msg, string filePath) { var intent = new Intent(Intent.ActionSend); intent.SetType("text/plain"); var docUri = FileProvider.GetUriForFile(Forms.Context.ApplicationContext, "com.aljaserm.ExpensesApp.provider", new Java.IO.File(filePath)); intent.PutExtra(Intent.ExtraStream, docUri); intent.PutExtra(Intent.ExtraText, title); intent.PutExtra(Intent.ExtraSubject, msg); var choserInteent = Intent.CreateChooser(intent, title); choserInteent.SetFlags(ActivityFlags.GrantReadUriPermission); Android.App.Application.Context.StartActivity(choserInteent); return(Task.FromResult(true)); }
public void TirarFoto() { Intent intent = new Intent(MediaStore.ActionImageCapture); arquivoImagem = PegarArquivoImagem(); var activity = Forms.Context as Activity; var caminho = FileProvider.GetUriForFile(this, "com.companyname.testdrive.provider", arquivoImagem); intent.PutExtra(MediaStore.ExtraOutput, caminho); activity.StartActivityForResult(intent, 0); //Activity //Intent }
private void IvPlayer_Click(object sender, EventArgs e) { //Toast.MakeText(context, "TODO: Change photo!", ToastLength.Long).Show(); App._file = new File(App._dir, String.Format("playerPhoto_{0}.jpg", Guid.NewGuid())); Intent intent = new Intent(MediaStore.ActionImageCapture); intent.PutExtra(MediaStore.ExtraOutput, FileProvider.GetUriForFile(context, AUTHORITY, App._file)); try { StartActivityForResult(intent, 0); } catch (ActivityNotFoundException ex) { Log.Debug("MyTAG", ex.Message); } }
public void OpenFileByGivenPath(string sourcePath) { Java.IO.File file = new Java.IO.File(sourcePath); Android.Net.Uri uri = FileProvider.GetUriForFile(Application.Context, "com.companyname.docandcom.fileprovider", file); string extension = MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString()); string mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension); Intent intent = new Intent(Intent.ActionView); intent.SetDataAndType(uri, mimeType); intent.AddFlags(ActivityFlags.GrantReadUriPermission); intent.AddFlags(ActivityFlags.NoHistory); var chooserIntent = Intent.CreateChooser(intent, "Open file"); chooserIntent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask); Application.Context.StartActivity(chooserIntent); }
async void Share(ShareViewModel source) { Java.IO.File file = new Java.IO.File(source.FileName); var intent = new Intent(Intent.ActionSend); var fileUri = FileProvider.GetUriForFile( this, "br.gov.almg.mobilesigner.fileprovider", file); intent.SetType(source.MimeType); intent.PutExtra(Intent.ExtraStream, fileUri); var intentChooser = Intent.CreateChooser(intent, "Compartilhar com"); StartActivityForResult(intentChooser, SHARE); }
public void ComposeMail(string fileName, string[] recipients, string subject, string messagebody, MemoryStream filestream) { string exception = string.Empty; string root = null; if (Android.OS.Environment.IsExternalStorageEmulated) { root = Android.OS.Environment.ExternalStorageDirectory.ToString(); } else { root = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); } Java.IO.File myDir = new Java.IO.File(root + "/Syncfusion"); 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(filestream.ToArray()); outs.Flush(); outs.Close(); } catch (Exception e) { exception = e.ToString(); } Intent email = new Intent(Android.Content.Intent.ActionSend); var uri = FileProvider.GetUriForFile(this.m_context, Application.Context.PackageName + ".provider", file); //file.SetReadable(true, true); email.PutExtra(Android.Content.Intent.ExtraSubject, subject); email.PutExtra(Intent.ExtraStream, uri); email.SetType("application/pdf"); MainActivity.BaseActivity.StartActivity(email); }
public async void Share(ImageSource imageSource) { try { var intent = new Intent(Intent.ActionSend); intent.SetType("image/jpeg"); IImageSourceHandler handler; if (imageSource is FileImageSource) { handler = new FileImageSourceHandler(); } else if (imageSource is StreamImageSource) { handler = new StreamImagesourceHandler(); // sic } else if (imageSource is UriImageSource) { handler = new ImageLoaderSourceHandler(); // sic } else { throw new NotImplementedException(); } var bitmap = await handler.LoadImageAsync(imageSource, Android.App.Application.Context); Java.IO.File path = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures + Java.IO.File.Separator + "MyImage.jpg"); using (System.IO.FileStream os = new System.IO.FileStream(path.AbsolutePath, System.IO.FileMode.Create)) { bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, os); } intent.AddFlags(ActivityFlags.GrantReadUriPermission); intent.AddFlags(ActivityFlags.GrantWriteUriPermission); intent.PutExtra(Intent.ExtraStream, FileProvider.GetUriForFile(Android.App.Application.Context, "com.orem.fcCustomer.fileprovider", path)); Android.App.Application.Context.StartActivity(Intent.CreateChooser(intent, "Share Image")); } catch (Exception ex) { } }
/// <summary> /// Open intent Camera when the request code of result is 503 /// </summary> public void OpenIntentCamera() { try { if (Methods.MultiMedia.IsCameraAvailable()) { Intent takePictureIntent = new Intent(MediaStore.ActionImageCapture); // Ensure that there's a camera activity to handle the intent var packageManager = takePictureIntent.ResolveActivity(Context.PackageManager); if (packageManager != null) { // Create the File where the photo should go File photoFile; try { photoFile = CreateImageFile(); } catch (Exception ex) { string timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").Format(new Date()); photoFile = new File(Methods.Path.FolderDcimImage + "/" + timeStamp + ".jpg"); CurrentPhotoPath = photoFile.AbsolutePath; // Error occurred while create ... Methods.DisplayReportResultTrack(ex); } // Continue only if the File was successfully created if (photoFile != null) { var photoUri = FileProvider.GetUriForFile(Context, Context.PackageName + ".fileprovider", photoFile); takePictureIntent.PutExtra(MediaStore.ExtraOutput, photoUri); } } Context.StartActivityForResult(takePictureIntent, 503); } else { Toast.MakeText(Context, Context.GetText(Resource.String.Lbl_Camera_Not_Available), ToastLength.Short)?.Show(); } } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
public bool OpenFile(byte[] fileData, string id, string fileName) { if (!CanOpenFile(fileName)) { return(false); } var extension = MimeTypeMap.GetFileExtensionFromUrl(fileName.Replace(' ', '_').ToLower()); if (extension == null) { return(false); } var mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension); if (mimeType == null) { return(false); } var cachePath = CrossCurrentActivity.Current.Activity.CacheDir; var filePath = Path.Combine(cachePath.Path, fileName); File.WriteAllBytes(filePath, fileData); var file = new Java.IO.File(cachePath, fileName); if (!file.IsFile) { return(false); } try { var intent = new Intent(Intent.ActionView); var uri = FileProvider.GetUriForFile(CrossCurrentActivity.Current.Activity.ApplicationContext, "com.x8bit.bitwarden.fileprovider", file); intent.SetDataAndType(uri, mimeType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); CrossCurrentActivity.Current.Activity.StartActivity(intent); return(true); } catch { } return(false); }