using Android.App; using Android.Widget; using Android.OS; using Shared; using Android.Content.PM; using System; using Android.Content; using Android.Net; using Shared.Phone.UserView; using CN.Jpush.Android.Api; using CN.Jpush.Android.Service; using Org.Json; using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; namespace com.hdl.home { /// 
 /// 设定为默认启动的Application
 /// 
 [Android.App.Application]
 public class Application : Android.App.Application
 {
 public Application(IntPtr handle, Android.Runtime.JniHandleOwnership ownerShip) : base(handle, ownerShip) { }

 public override void OnCreate()
 {
 //安卓配网初始
 //var result = Com.Mediatek.Elian.ElianNative.LoadLib();
 //if (!result)
 //{
 // System.Console.WriteLine("Error,can't load elianjni lib");
 //} initAll();
 base.OnCreate();
 } /// 
 /// 所有初始化全部在这个方法实现
 /// 
 void initAll()
 {
 BaseActivity.IsEnnableGPS = false; //设置极光调试模式,为false时只打印警告信息 // System.Console.WriteLine($"AAA : {System.DateTime.Now.ToString()}"); #if Release
 JPushInterface.SetDebugMode(false); //保存手机名称到本地文件 //System.Console.WriteLine($"BBB : {System .DateTime .Now .ToString ()}"); JPushInterface.Init(this); //System.Console.WriteLine($"CCC : {System.DateTime.Now.ToString()}"); #endif BaseActivity.BackKeyAction = () => { try { if (Shared.Common.CommonPage.BackKeyCanClick == false) { //不允许按返回键 return; } if (Shared.Common.CommonPage.Loading != null) { Console.WriteLine(Shared.Common.CommonPage.Loading.CurStatus); if (Shared.Common.CommonPage.Loading.CurStatus) { //Shared.SimpleControl.MainPage.Loading.Hide (); return; } } var lastView = Shared.Application.MainPage.GetChildren(Shared.Application.MainPage.ChildrenCount - 1); if (lastView != null && lastView.Tag?.ToString() == "Dialog") { Console.WriteLine("Remove Dialog!!!!"); var lastView2 = Shared.Application.MainPage.GetChildren(Shared.Application.MainPage.ChildrenCount - 2); lastView.RemoveFromParent(); lastView2.RemoveFromParent(); Console.WriteLine("Remove Dialog End!!!!"); return; } } catch (System.Exception ezx) { Console.WriteLine(ezx.Message); } if (HomePage.Instance.ChildrenCount > 1) { Console.WriteLine("Remove PageLayout Children!!!!"); HomePage.Instance.GetChildren(HomePage.Instance.ChildrenCount - 1).RemoveFromParent(); Console.WriteLine("Remove PageLayout Children End!!!!"); } else { BaseActivity.VerifyDateTime = DateTime.MaxValue; Console.WriteLine("BaseActivity VerifyDateTime Max!!!!"); } }; 
 BaseActivity.OnCreateActoin += (activity, application) => { Shared.Application.FontSize = 12; AppCenter.Start("4802834a-e7e9-4dd8-93f1-c2f88f0bd464", typeof(Analytics), typeof(Crashes));
#if Release
 //保存获取的极光服务器上的注册ID到本地文件
 var registrationId = JPushInterface.GetRegistrationID(activity); System.Console.WriteLine("registrationId-极光id=" + registrationId); if (!string.IsNullOrEmpty(registrationId))
 {
 Shared.Common.Config.Instance.RegistrationID = registrationId;
 Shared.Common.Config.Instance.Save();
 }
#endif
 };
 BaseActivity.RefreshUIAction += (activity) => {
 Shared.Language.CurrentLanguage = "Chinese";
 Shared.Common.CommonPage.Instance.Show();
 };
 BaseActivity.OnResumeAction += (activity) => {
 };
 BaseActivity.NetworkStateChanged += (v) =>
 {
 //网络状态变化处理事件 Shared.Common.CommonPage.nowNetworkMode = v;
 };
 BaseActivity.OnDestroyAction += (activity) => {
 //socket停止连接
 //ZigBee.Device.ZbGateway.FindGateWaySocket.Stop();
 };

 }

 public static bool IsShowTip = true;
 JpushNotificationReceiver myReceiver = new JpushNotificationReceiver { };

 /// 
 /// 项目启动时网络查询
 /// 
 void checkSomeInfo()
 {
 var status = isNetworkAvailable(this);
 string internetStatus = "Available";
 if (!status)
 {
 internetStatus = "UnaVailable";
 }
 else
 {
 var isWifi = isWifiConnected(this);
 if (isWifi)
 {
 internetStatus = "WiFiConnect";
 }
 else
 {
 internetStatus = "MobileConnect";
 }
 }

 int connectState = 0;
 if (internetStatus == "UnaVailable")
 {
 connectState = 0;
 }
 else if (internetStatus == "WiFiConnect")
 {
 connectState = 2;
 }
 else
 {
 connectState = 1;
 }
 //ZigBee.Device.ZbGateway.CheckConnection(connectState);
 }

 /// 
 /// 网络是否可用
 /// 
 /// true, if network available was ised, false otherwise.
 /// Context.
 bool isNetworkAvailable(Context context)
 {
 var cm = (ConnectivityManager)context.GetSystemService(ConnectivityService);

 if (cm == null || cm.ActiveNetworkInfo == null)
 {
 //当前网络不可用
 return false;
 }
 else
 {
 return cm.ActiveNetworkInfo.IsAvailable;
 }
 }

 /// 
 /// 网络是否连接
 /// 
 /// true, if wifi connected was ised, false otherwise.
 /// Context.
 bool isWifiConnected(Context context)
 {
 if (context != null)
 {
 var cm = (ConnectivityManager)context.GetSystemService(ConnectivityService);

 var mWiFiNetworkInfo = cm.GetNetworkInfo(ConnectivityType.Wifi);
 if (Android.Net.NetworkInfo.State.Connected == mWiFiNetworkInfo.GetState())
 {
 //当前网络是Wi-Fi连接
 return true;
 }

 var moWiFiNetworkInfo = cm.GetNetworkInfo(ConnectivityType.Mobile);
 if (Android.Net.NetworkInfo.State.Connected == moWiFiNetworkInfo.GetState())
 {
 //当前网络是Mobile连接
 return false;
 }
 }
 return false;
 } } public class JpushNotificationReceiver : BroadcastReceiver { private static string TAG = "JpushNotificationReceiver"; private NotificationManager nm; static string ACTION = "android.intent.action.BOOT_COMPLETED"; public override void OnReceive(Context context, Intent intent) { if (nm == null) { nm = (NotificationManager)context.GetSystemService(Context.NotificationService); } //base.OnReceive (context, intent); try { Bundle bundle = intent.Extras; if (intent.Action == ACTION) { //开机自动服务自动启动,PushService是要启动的服务 Intent service = new Intent(context, typeof(PushService)); context.StartService(service); } //接收Registration Id if (JPushInterface.ActionRegistrationId == intent.Action) { string regId = bundle.GetString(JPushInterface.ExtraRegistrationId); if (!string.IsNullOrEmpty(regId)) { Shared.Common.Config.Instance.RegistrationID = regId; Shared.Common.Config.Instance.Save(); } } //用户点击打开了通知 else if (JPushInterface.ActionNotificationOpened == intent.Action) { OpenNotification(context, bundle); } //接受到推送下来的通知 else if (JPushInterface.ActionNotificationReceived == intent.Action) { //int notifactionId = bundle.GetInt(JPushInterface.ExtraNotificationId); ReceivingNotification(context, bundle); //Shared.Common.CommonPage.Instance.SingOut(); } //接收到推送下来的自定义消息 else if (JPushInterface.ActionMessageReceived == intent.Action) { bundle.GetString(JPushInterface.ExtraMessage); } else { } } catch (System.Exception e) { System.Console.WriteLine("极光推送出错:" + e.Message); } } /// /// 接收消息通知 /// /// Context. /// Bundle. private void ReceivingNotification(Context context, Bundle bundle) { String title = bundle.GetString(JPushInterface.ExtraNotificationTitle); System.Console.WriteLine(TAG, " title : " + title); String message = bundle.GetString(JPushInterface.ExtraAlert); System.Console.WriteLine(TAG, "message : " + message); String extras = bundle.GetString(JPushInterface.ExtraExtra); System.Console.WriteLine(TAG, "extras : " + extras); //处理极光消息推送的逻辑函数 Shared.Phone.UserCenter.HdlJiguangMsgPushLogic.Current.AdjustJiguangMsgPush(title, message, extras); } /// /// 打开消息显示界面 /// /// Context. /// Bundle. private void OpenNotification(Context context, Bundle bundle) { String extras = bundle.GetString(JPushInterface.ExtraExtra); String myValue = ""; try { JSONObject extrasJson = new JSONObject(extras); myValue = extrasJson.OptString("myKey"); } catch (Exception e) { System.Console.WriteLine(TAG, "Unexpected: extras is not a valid json", e); return; } Intent i = new Intent(context, typeof(BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class); i.PutExtras(bundle); i.SetFlags(ActivityFlags.NewTask); context.StartActivity(i); //if (TYPE_THIS.equals(myValue)) //{ //Intent mIntent = new Intent(context, ThisActivity.class); //mIntent.putExtras(bundle); //mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //context.startActivity(mIntent); //} //else if (TYPE_ANOTHER.equals(myValue)) //{ //Intent mIntent = new Intent(context, AnotherActivity.class); //mIntent.putExtras(bundle); //mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //context.startActivity(mIntent); //} } } }