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);
                }
            }
        }
示例#3
0
        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();
        }
示例#6
0
        //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"));
            }
        }
示例#7
0
        /// <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);
            }
        }
示例#9
0
        /// <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);
        }
示例#10
0
        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);
            }
        }
示例#11
0
        // 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);
            }
        }
示例#12
0
        // 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);
        }
示例#13
0
        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);
            }
        }
示例#15
0
        //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);
            }
        }
示例#16
0
        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;
                }
            }
        }
示例#17
0
        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);
        }
示例#18
0
        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
            }
        }
示例#19
0
        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);
        }
示例#21
0
        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);
        }
示例#22
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
        }
示例#24
0
        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);
        }
示例#26
0
        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);
        }
示例#28
0
        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)
            {
            }
        }
示例#29
0
        /// <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);
            }
        }
示例#30
0
        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);
        }