using Android.App; using Android.Content; using Android.Provider; using AndroidX.Core.Content; using System.IO; using JFile = Java.IO.File; namespace System.Application { /// /// 页面跳转到平台特定操作系统中的某些页面,例如当前APP设置页 /// public static class GoToPlatformPages { /// /// 模拟 Home 键按下效果,回到主页 /// /// public static void MockHomePressed(Context context) { var intent = new Intent(Intent.ActionMain); intent.SetFlags(ActivityFlags.NewTask); intent.AddCategory(Intent.CategoryHome); context.StartActivity(intent); } /// /// 跳转到相机拍照 /// /// /// 返回结果时的请求码 /// 照片存放路径 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, activity.ApplicationContext().PackageName + ".fileProvider", 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); } } }