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);
//}
}
}
}