using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using System; using System.Collections.Generic; using System.Linq; using System.Text; using static Java.Lang.Thread; using Java.Lang; using System.Threading.Tasks; using static CPF.Android.FileSaveFragment; using Android.Content.PM; namespace CPF.Android { public class CpfActivity : Activity, IUncaughtExceptionHandler//, FileSaveCallbacks { public CpfActivity() { Java.Lang.Thread.DefaultUncaughtExceptionHandler = this; if (CurrentActivity == null) { CurrentActivity = this; CPF.Platform.Application.Run(new CpfAndroidApp()); } } /// /// 当前活动的Activity /// public static Activity CurrentActivity { get; private set; } protected override void OnCreate(Bundle savedInstanceState) { RequestWindowFeature(WindowFeatures.NoTitle); base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); } protected override void OnResume() { CurrentActivity = this; base.OnResume(); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } protected override void OnDestroy() { base.OnDestroy(); if (CurrentActivity == this) { CurrentActivity = null; } } /// /// 申请弹窗权限,可以弹到桌面,需要添加SYSTEM_ALERT_WINDOW 权限 /// public void ApplyDrawOverLays() { Intent intent = new Intent(); intent.SetAction(global::Android.Provider.Settings.ActionManageOverlayPermission); intent.SetData(global::Android.Net.Uri.Parse("package:" + PackageName)); StartActivity(intent); } public virtual void UncaughtException(Thread t, Throwable e) { Console.WriteLine("java异常:线程:" + t.Name + " 堆栈:" + e.StackTrace); } //internal TaskCompletionSource fileName; //protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) //{ // if (requestCode == 20) // { // var uri = data?.Data as global::Android.Net.Uri; // if (fileName != null) // { // if (uri == null) // { // fileName.SetResult(new string[] {}); // } // else // { // fileName.SetResult(new string[] { uri.Path }); // } // } // } // base.OnActivityResult(requestCode, resultCode, data); //} //public bool onCanSave(string absolutePath, string fileName) //{ // return true; //} //public void onConfirmSave(string absolutePath, string fileName) //{ //} public CpfView Main { get; set; } } }