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
|
{
|
/// <summary>
/// 设定为默认启动的Application
/// </summary>
[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();
}
|
|
|
|
/// <summary>
/// 所有初始化全部在这个方法实现
/// </summary>
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.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 { };
/// <summary>
/// 项目启动时网络查询
/// </summary>
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);
}
/// <summary>
/// 网络是否可用
/// </summary>
/// <returns><c>true</c>, if network available was ised, <c>false</c> otherwise.</returns>
/// <param name="context">Context.</param>
bool isNetworkAvailable(Context context)
{
var cm = (ConnectivityManager)context.GetSystemService(ConnectivityService);
if (cm == null || cm.ActiveNetworkInfo == null)
{
//当前网络不可用
return false;
}
else
{
return cm.ActiveNetworkInfo.IsAvailable;
}
}
/// <summary>
/// 网络是否连接
/// </summary>
/// <returns><c>true</c>, if wifi connected was ised, <c>false</c> otherwise.</returns>
/// <param name="context">Context.</param>
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);
|
}
|
}
|
/// <summary>
|
/// 接收消息通知
|
/// </summary>
|
/// <param name="context">Context.</param>
|
/// <param name="bundle">Bundle.</param>
|
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);
|
}
|
/// <summary>
|
/// 打开消息显示界面
|
/// </summary>
|
/// <param name="context">Context.</param>
|
/// <param name="bundle">Bundle.</param>
|
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);
|
//}
|
}
|
}
|
}
|