Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
MainActivity.cs
浏览该文件的文档.
1using Android;
2using Android.Animation;
3using Android.App;
4using Android.Content;
5using Android.Content.PM;
6using Android.OS;
7using Android.Provider;
8using Android.Views;
9using Android.Views.Animations;
10using Android.Widget;
11using Android.Window;
12using Engine;
13using Game;
14using Environment = Android.OS.Environment;
15using Permission = Android.Content.PM.Permission;
16using Resource = _Microsoft.Android.Resource.Designer.Resource;
17using Uri = Android.Net.Uri;
18
19#pragma warning disable CA1416
20namespace SC4Android {
21 [Activity(
22 Label = "@string/ShortTitle",
23 LaunchMode = LaunchMode.SingleTask,
24 Icon = "@mipmap/icon",
25 Theme = "@style/MainTheme",
26 MainLauncher = true,
27 ConfigurationChanges =
28 ConfigChanges.ScreenSize
29 | ConfigChanges.Orientation
30 | ConfigChanges.UiMode
31 | ConfigChanges.ScreenLayout
32 | ConfigChanges.SmallestScreenSize
33 | ConfigChanges.Keyboard
34 | ConfigChanges.KeyboardHidden,
35 ScreenOrientation = ScreenOrientation.Landscape
36 ),
37 IntentFilter(
38 ["android.intent.action.VIEW"],
39 Categories = ["android.intent.category.DEFAULT", "android.intent.category.BROWSABLE"]
40 )]
41 public class MainActivity : EngineActivity {
42 public static bool GraterThanAndroid11 { get; } = Build.VERSION.SdkInt >= BuildVersionCodes.R;
43 public static bool GraterThanAndroid6 { get; } = Build.VERSION.SdkInt >= BuildVersionCodes.M;
44
45 public static bool CheckAndRequestPermission(Activity activity) {
46 bool arePermissionsGranted = true;
48 //当版本大于安卓11时
49 if (!Environment.IsExternalStorageManager) {
50 arePermissionsGranted = false;
51 activity.RunOnUiThread(() => Toast.MakeText(activity, activity.Resources?.GetString(Resource.String.NeedPermission), ToastLength.Short)?.Show());
52 activity.StartActivity(new Intent(Settings.ActionManageAppAllFilesAccessPermission, Uri.Parse($"package:{activity.PackageName}")));
53 }
54 return arePermissionsGranted;
55 }
57 //当版本大于安卓6
58 List<string> permissionList = [];
59 Permission readPermissionStatus = activity.CheckSelfPermission(Manifest.Permission.ReadExternalStorage);
60 if (readPermissionStatus != Permission.Granted) {
61 arePermissionsGranted = false;
62 permissionList.Add(Manifest.Permission.ReadExternalStorage);
63 }
64 Permission writePermissionStatus = activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage);
65 if (writePermissionStatus != Permission.Granted) {
66 arePermissionsGranted = false;
67 permissionList.Add(Manifest.Permission.WriteExternalStorage);
68 }
69 if (permissionList.Count > 0) {
70 activity.RunOnUiThread(() => Toast.MakeText(activity, activity.Resources?.GetString(Resource.String.NeedPermission), ToastLength.Short)?.Show());
71 activity.RequestPermissions(permissionList.ToArray(), 1);
72 }
73 }
74 return arePermissionsGranted;
75 }
76
77 public static bool IsPermissionGranted(Activity activity) {
79 return Environment.IsExternalStorageManager;
80 }
82 return activity.CheckSelfPermission(Manifest.Permission.ReadExternalStorage) == Permission.Granted
83 && activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) == Permission.Granted;
84 }
85 return true;
86 }
87
88 protected override void OnRun() {
89 base.OnRun();
90 if (CheckAndRequestPermission(this)) {
91 RunRequired = true;
92 }
93 else {
94 while (true) {
95 Thread.Sleep(100);
96 if (RunRequired) {
97 break;
98 }
100 if (RunRequired) {
101 break;
102 }
103 }
104 }
106 }
107
108 static bool RunRequired { get; set; }
109
111
112 protected override void OnPause() {
113 base.OnPause();
114 m_isPaused = true;
115 }
116
117 protected override void OnResume() {
118 base.OnResume();
119 if (m_isPaused && !RunRequired) {
120 m_isPaused = false;
122 }
123 }
124
125 protected override void OnCreate(Bundle savedInstanceState) {
126 base.OnCreate(savedInstanceState);
127 Window?.DecorView.ViewTreeObserver?.AddOnPreDrawListener(new ViewTreeObserverListener());
128 if (Build.VERSION.SdkInt >= BuildVersionCodes.S) {
129 SplashScreen.SetOnExitAnimationListener(new SplashScreenOnExitAnimationListener());
130 }
131 }
132
133 public class ViewTreeObserverListener : Java.Lang.Object, ViewTreeObserver.IOnPreDrawListener {
134 public bool OnPreDraw() => Program.m_firstFramePrepared;
135 }
136
137 public class SplashScreenOnExitAnimationListener : Java.Lang.Object, ISplashScreenOnExitAnimationListener {
138 public void OnSplashScreenExit(SplashScreenView view) {
139 ObjectAnimator slideUp = ObjectAnimator.OfFloat(view, "alpha", 1f, 0f);
140 if (slideUp == null) {
141 return;
142 }
143 slideUp.SetInterpolator(new AnticipateInterpolator());
144 slideUp.SetDuration(800L);
145 slideUp.AnimationEnd += (_, _) => { view.Remove(); };
146 slideUp.Start();
147 }
148 }
149 }
150}
_Microsoft.Android.Resource.Designer.Resource Resource
Android.Net.Uri Uri
Android.Content.PM.Permission Permission
System.Environment Environment
static void EntryPoint()
static bool CheckAndRequestPermission(Activity activity)
override void OnCreate(Bundle savedInstanceState)
static bool IsPermissionGranted(Activity activity)