CPF/CPF.Android/CpfActivity.cs
2023-11-21 23:05:03 +08:00

113 lines
3.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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());
}
}
/// <summary>
/// 当前活动的Activity
/// </summary>
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;
}
}
/// <summary>
/// 申请弹窗权限可以弹到桌面需要添加SYSTEM_ALERT_WINDOW 权限
/// </summary>
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<string[]> 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; }
}
}