From 7fa4b66cd58a51c9e7e512ee652282825d16e5dc Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期二, 27 十月 2020 15:13:21 +0800
Subject: [PATCH] 2020-10-27 1.增加iOS越狱和Androidr Root检测,强制关闭APP
---
Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs | 341 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 306 insertions(+), 35 deletions(-)
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs
index 8883165..82dc84f 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs
@@ -77,7 +77,7 @@
});
}
} catch (Exception ex) {
- Console.WriteLine (ex.Message);
+ Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
@@ -88,7 +88,7 @@
ItemButton.MouseUpEventHandler += (sender, e) => {
Action action = () => {
Application.RunOnMainThread (() => {
- MainPage.Loading.Start ("please wait...");
+ MainPage.Loading.Start ("Please wait...");
});
System.Threading.Tasks.Task.Run (() => {
try {
@@ -98,7 +98,7 @@
InitDevcieRow (alexaDeviceLista, bodyView);
});
} catch (Exception ex) {
- Console.WriteLine (ex.Message);
+ Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
@@ -111,7 +111,7 @@
System.Threading.Tasks.Task.Factory.StartNew (() => {
try {
Application.RunOnMainThread (() => {
- MainPage.Loading.Start ("please wait...");
+ MainPage.Loading.Start ("Please wait...");
});
foreach (var newDevicePath in roomDeviceFilePathList) {
var common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (newDevicePath)));
@@ -119,19 +119,68 @@
// DeviceName = common.Name, DeviceID = common.DeviceID, Id = 1, DeviceType = common.Type.ToString (), LoopID = common.LoopID,
// MAC = UserConfig.Instance.GatewayMAC, RegionID = UserConfig.Instance.CurrentRegion.RegionID, SubnetID = common.SubnetID
//});
+
+
if (common != null) {
- var oldDevice = alexaDeviceLista.Find ((obj) => obj.SubnetID == common.SubnetID && obj.DeviceID == common.DeviceID && obj.LoopID == common.LoopID && obj.DeviceType == common.Type.ToString ());
+ var commonType = common.Type.ToString ();
+ if (commonType == "CurtainModel") {
+ commonType = "CurtainModule";
+ } else if (commonType == "LightEnergySwitch" || commonType == "LightSwitchSocket" || commonType == "LightEnergySocket") {
+ commonType = "LightSwitch";
+ } else if (commonType == "ACInfrared") {
+ commonType = "HVAC";
+ }
+ var oldDevice = alexaDeviceLista.Find ((obj) => obj.SubnetID == common.SubnetID && obj.DeviceID == common.DeviceID && obj.LoopID == common.LoopID && obj.DeviceType == commonType);
if (oldDevice == null) {
- AddDevice (common);
+ var isSuccess = AddDevice (common);
+ if (!isSuccess) {
+ //璺冲嚭寰幆
+ break;
+ }
+ } else {
+ //2020-07-21 濡傛灉宸茬粡瀛樺湪 鍖归厤璁惧澶囨敞鏄惁闇�瑕佹洿鏂�
+ if (oldDevice.DeviceName != common.Name) {
+ //Utlis.WriteLine ("鍚嶅瓧涓嶅尮閰嶏紝鎻愪氦鏇存柊锛�" + common.Name);
+ var oldName = oldDevice.DeviceName;
+ oldDevice.DeviceName = common.Name;
+ var isSuccess = UpdateDevice (oldDevice);
+ if (!isSuccess) {
+ //杩樺師
+ oldDevice.DeviceName = oldName;
+ //Utlis.WriteLine ("鏇存柊澶辫触锛侊紒锛侊紒");
+ } else {
+ //Utlis.WriteLine ("鏇存柊鎴愬姛锛�");
+ }
+ } else {
+ //Utlis.WriteLine ("鍚嶅瓧涓�鏍蜂笉鐢ㄦ洿鏂帮細"+ common.Name);
+ }
+
}
}
}
- foreach (var oldDevice in alexaDeviceLista) {
- var oldDevicePath = "Equipment_" + oldDevice.DeviceType + "_" + oldDevice.SubnetID + "_" + oldDevice.DeviceID + "_" + (oldDevice.LoopID.ToString ().Length < 2 ? "0" + oldDevice.LoopID.ToString () : oldDevice.LoopID.ToString ());
- if (!roomDeviceFilePathList.Contains (oldDevicePath)) {
+ var roomDeviceFilePathListNew = new List<string> ();
+ foreach (var path in roomDeviceFilePathList) {
+ var deviceFilePath = path;
+ if (deviceFilePath.Contains ("LightEnergySocket")) {
+ deviceFilePath = deviceFilePath.Replace ("LightEnergySocket", "LightSwitch");
+ } else if (deviceFilePath.Contains ("LightEnergySwitch")) {
+ deviceFilePath = deviceFilePath.Replace ("LightEnergySwitch", "LightSwitch");
+ } else if (deviceFilePath.Contains ("LightSwitchSocket")) {
+ deviceFilePath = deviceFilePath.Replace ("LightSwitchSocket", "LightSwitch");
+ } else if (deviceFilePath.Contains ("ACInfrared")) {
+ deviceFilePath = deviceFilePath.Replace ("ACInfrared", "HVAC");
+ } else if (deviceFilePath.Contains ("CurtainModel")) {
+ deviceFilePath = deviceFilePath.Replace ("CurtainModel", "CurtainModule");
+ }
+ roomDeviceFilePathListNew.Add (deviceFilePath);
+ }
+
+ foreach (var oldDevice in alexaDeviceLista) {
+ var oldDevicePath = "Equipment_" + oldDevice.DeviceType + "_" + oldDevice.SubnetID + "_" + oldDevice.DeviceID + "_" + (oldDevice.LoopID.ToString ().Length < 2 ? "0" + oldDevice.LoopID.ToString () : oldDevice.LoopID.ToString ());
+ if (!roomDeviceFilePathListNew.Contains (oldDevicePath)) {
DelDevice (oldDevice.Id);
- Console.WriteLine ("delDevice " + oldDevice.DeviceName);
+ Utlis.WriteLine ("delDevice " + oldDevice.DeviceName);
}
}
@@ -216,7 +265,7 @@
uploadScene.DeviceListObject.Add (new AddCloudSceneDeviceData () {
Command = (int)Command.UpdataCurtainModelStutas, SubnetId = device.SubnetID, DeviceId = device.DeviceID,
DeviceName = device.Name, DeviceType = "CurtainModule", LoopId = device.LoopID,
- DataString = device.Status.ToString ()
+ DataString = ((byte)device.Status).ToString ()
});
}
} else if (common.Type == DeviceType.CurtainRoller) {
@@ -225,7 +274,7 @@
uploadScene.DeviceListObject.Add (new AddCloudSceneDeviceData () {
Command = (int)Command.UpdataCurtainModelStutas, SubnetId = device.SubnetID, DeviceId = device.DeviceID,
DeviceName = device.Name, DeviceType = "CurtainRoller", LoopId = device.LoopID,
- DataString = (device.Status + 3).ToString ()
+ DataString = ((byte)device.CurtainProress + 3).ToString ()
});
}
} else if (common.Type == DeviceType.CurtainTrietex) {
@@ -234,7 +283,7 @@
uploadScene.DeviceListObject.Add (new AddCloudSceneDeviceData () {
Command = (int)Command.UpdataCurtainModelStutas, SubnetId = device.SubnetID, DeviceId = device.DeviceID,
DeviceName = device.Name, DeviceType = "CurtainRoller", LoopId = device.LoopID,
- DataString = (device.Status + 3).ToString ()
+ DataString = ((byte)device.CurtainProress + 3).ToString ()
});
}
} else if (common.Type == DeviceType.HVAC || common.Type == DeviceType.ACInfrared) {
@@ -268,6 +317,15 @@
Command = (int)Command.SetScene, SubnetId = device.SubnetID, DeviceId = device.DeviceID,
DeviceName = device.Name, DeviceType = "SceneControl", LoopId = device.AreaID,
DataString = device.AreaSceneID.ToString ()
+ });
+ }
+ } else if (common.Type == DeviceType.UniversalDevice) {//2020-09-02 鏂板閫氱敤寮�鍏�
+ var device = Newtonsoft.Json.JsonConvert.DeserializeObject<UniversalDevice> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
+ if (device != null) {
+ uploadScene.DeviceListObject.Add (new AddCloudSceneDeviceData () {
+ Command = (int)Command.SetCommonSwitch, SubnetId = device.SubnetID, DeviceId = device.DeviceID,
+ DeviceName = device.Name, DeviceType = "UniversalDevice", LoopId = device.LoopID,
+ DataString = device.SendBytes[1].ToString(),
});
}
}
@@ -356,11 +414,16 @@
}
}
- AddScene (uploadScene);
+ var isSuccess = AddScene (uploadScene);
+ if (!isSuccess) {
+ //璺冲嚭寰幆
+ break;
+ }
}
}
}
+
alexaDeviceLista = ReadDeviceList ();
Application.RunOnMainThread (() => {
@@ -372,7 +435,7 @@
});
} catch (Exception ex) {
- Console.WriteLine (ex.Message);
+ Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
@@ -384,13 +447,13 @@
System.Threading.Tasks.Task.Factory.StartNew (() => {
try {
Application.RunOnMainThread (() => {
- MainPage.Loading.Start ("please wait...");
+ MainPage.Loading.Start ("Please wait...");
});
var tempRoom = new Room ();
foreach (var device in alexaDeviceLista) {//鐗规畩澶勭悊鏈嶅姟鍣ㄤ笌鏈湴璁惧绫诲瀷涓嶄竴鏍风殑璁惧
var deviceTypeSaveString = device.DeviceType;
- if (deviceTypeSaveString == "CurtainModule") {
- deviceTypeSaveString = "CurtainModel";
+ if (deviceTypeSaveString == "CurtainModel") {
+ deviceTypeSaveString = "CurtainModule";
} else if (deviceTypeSaveString == "LightEnergySwitch") {
deviceTypeSaveString = "LightSwitch";
} else if (deviceTypeSaveString == "LightEnergySocket") {
@@ -415,7 +478,7 @@
userDeviceListPage.ShowPage (action, saveAction);
});
} catch (Exception ex) {
- Console.WriteLine (ex.Message);
+ Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
@@ -434,9 +497,13 @@
var deviceList = new List<UpdateDeviceObj> ();
var requestObj = new GetDeviceListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
- var revertObj = MainPage.RequestHttps (API.GetDeviceList, requestJson, true);
- if (revertObj.StateCode.ToUpper() == "SUCCESS") {
- deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UpdateDeviceObj>> (revertObj.ResponseData.ToString());
+ var revertObj = MainPage.RequestHttps (API.GetDeviceList, requestJson);
+ if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+ deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UpdateDeviceObj>> (revertObj.ResponseData.ToString ());
+ } else {
+ //2020-06-29 寮圭獥鎻愮ず閿欒
+ ShowErrorInfo (revertObj.StateCode);
+
}
return deviceList;
}
@@ -459,9 +526,106 @@
}
//var requestObj = new UploadDevicesObj () { Device = uploadDevice };
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (uploadDevice);
- var revertObj = MainPage.RequestHttps (API.UploadDevices, requestJson, true);
+ var revertObj = MainPage.RequestHttps (API.UploadDevices, requestJson);
if (revertObj.StateCode.ToUpper() == "SUCCESS") {
return true;
+ }else if (revertObj.StateCode == "Exist") {
+ Application.RunOnMainThread (() => {
+ MainPage.AddTip (ErrorCode.AddFailed + " " + ErrorCode.NameExist + " ( " + device.Name + " )");
+ });
+ return true;
+ } else {
+ //2020-06-29 寮瑰嚭鎻愮ず閿欒
+ ShowUploadDevicesInfo (revertObj.StateCode);
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 涓婁紶璁惧 閿欒鎻愮ず
+ /// </summary>
+ /// <param name="stateCodeStr"></param>
+ void ShowUploadDevicesInfo (string stateCodeStr,bool bUpload = true)
+ {
+ string mes = "";
+ if (stateCodeStr == "NoRecord") {
+ //浣忓畢鏈粦瀹氱綉鍏筹紒
+ mes = ErrorCode.HomeNoRecord;
+ } else if (stateCodeStr == "NoExist") {
+ //浣忓畢涓嶅瓨鍦紒
+ mes = ErrorCode.HomeNoExist;
+ } else if (stateCodeStr == "Exist") {
+ //璁惧鍚嶇О宸插瓨鍦�
+ mes = ErrorCode.NameExist;
+ } else if (stateCodeStr == ErrorCode.NetworkError) {
+ mes = ErrorCode.NetworkError;
+ } else {
+ mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
+
+ }
+ if (!string.IsNullOrEmpty (mes)) {
+ Application.RunOnMainThread (() => {
+ if (bUpload) {
+ MainPage.AddTip (ErrorCode.AddFailed + " " + mes);
+ } else {
+ MainPage.AddTip ("Update failed! " + mes);
+ }
+
+ //new Alert ("", ErrorCode.AddFailed + " " + mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+ });
+ }
+
+ }
+
+ /// <summary>
+ /// 閿欒鎻愰啋
+ /// </summary>
+ /// <param name="stateCodeStr"></param>
+ void ShowErrorInfo (string stateCodeStr)
+ {
+ string mes = "";
+ if (stateCodeStr == ErrorCode.NetworkError) {
+ mes = ErrorCode.NetworkError;
+ } else {
+ mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
+
+ }
+ if (!string.IsNullOrEmpty (mes)) {
+ Application.RunOnMainThread (() => {
+ MainPage.AddTip (ErrorCode.OperationFailed + " " + mes);
+ });
+ }
+
+ }
+
+ /// <summary>
+ /// 鍒锋柊璁惧鍚嶅瓧
+ /// </summary>
+ public bool UpdateDevice (UpdateDeviceObj mUpdateDeviceObj)
+ {
+ var mUpdateAlexaDeviceObj = new UpdateAlexaDeviceObj () {
+ Id = mUpdateDeviceObj.Id,
+ DeviceType = mUpdateDeviceObj.DeviceType,
+ SubnetID = mUpdateDeviceObj.SubnetID,
+ DeviceID = mUpdateDeviceObj.DeviceID,
+ LoopID = mUpdateDeviceObj.LoopID,
+ DeviceName = mUpdateDeviceObj.DeviceName,
+ MAC = mUpdateDeviceObj.MAC,
+ RegionID = UserConfig.Instance.CurrentRegion.Id,
+ };
+
+ var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mUpdateAlexaDeviceObj);
+ var revertObj = MainPage.RequestHttps (API.UpdateDevice, requestJson);
+ if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+ return true;
+ } else if (revertObj.StateCode == "Exist") {
+ Application.RunOnMainThread (() => {
+ MainPage.AddTip ("Update failed!" + " " + ErrorCode.NameExist + " ( " + mUpdateDeviceObj.DeviceName + " )");
+ });
+ return true;
+ } else {
+ //2020-06-29 寮瑰嚭鎻愮ず閿欒
+ ShowUploadDevicesInfo (revertObj.StateCode, false);
}
return false;
}
@@ -473,9 +637,12 @@
{
var requestObj = new DelDeviceObj () { Id = commonId };
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
- var revertObj = MainPage.RequestHttps (API.DeleteDevice, requestJson, true);
+ var revertObj = MainPage.RequestHttps (API.DeleteDevice, requestJson);
if (revertObj.StateCode.ToUpper() == "SUCCESS") {
return true;
+ } else {
+ //2020-06-29 寮圭獥鎻愮ず閿欒
+ ShowErrorInfo (revertObj.StateCode);
}
return false;
}
@@ -490,9 +657,12 @@
var sceneList = new List<SceneByRegion> ();
var requestObj = new SceneByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
- var revertObj = MainPage.RequestHttps (API.GetSceneList, requestJson, true);
+ var revertObj = MainPage.RequestHttps (API.GetSceneList, requestJson);
if (revertObj.StateCode.ToUpper() == "SUCCESS") {
sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SceneByRegion>> (revertObj.ResponseData.ToString ());
+ } else {
+ //2020-06-29 寮圭獥鎻愮ず閿欒
+ ShowErrorInfo (revertObj.StateCode);
}
return sceneList;
}
@@ -503,7 +673,7 @@
public bool AddScene (SceneAndDeviceList sceneMark)
{
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (sceneMark);
- var revertObj = MainPage.RequestHttps (API.AddSceneAndDeviceList, requestJson, true);
+ var revertObj = MainPage.RequestHttps (API.AddSceneAndDeviceList, requestJson);
if (revertObj.StateCode.ToUpper() == "SUCCESS") {
//var requestAddDeviceObj = new BindDeviceToSceneItemObj () { SceneId = sceneId, Command = command, DeviceID = 0, DataString = dataString };
//var requestAddDeviceJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestAddDeviceObj);
@@ -511,7 +681,16 @@
//if (revertAddDeviceObj.StateCode.ToUpper() == "SUCCESS") {
return true;
//}
+ } else if (revertObj.StateCode == "Exist") {
+ Application.RunOnMainThread (() => {
+ MainPage.AddTip (ErrorCode.AddFailed + " " + ErrorCode.NameExist + " ( " + sceneMark.SceneName + " )");
+ });
+ return true;
+ } else {
+ //2020-06-29 寮瑰嚭鎻愮ず閿欒
+ ShowUploadDevicesInfo (revertObj.StateCode);
}
+
return false;
}
@@ -536,13 +715,52 @@
{
var requestObj = new DeleteSceneObj () { Id = sceneId };
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
- var revertObj = MainPage.RequestHttps (API.DeleteScene, requestJson, true);
+ var revertObj = MainPage.RequestHttps (API.DeleteScene, requestJson);
if (revertObj.StateCode.ToUpper() == "SUCCESS") {
return true;
+ } else {
+ //2020-06-29 寮圭獥鎻愮ず閿欒
+ ShowErrorInfo (revertObj.StateCode);
}
return false;
}
#endregion
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="bodyView"></param>
+ /// <param name="isScene"></param>
+ void AddTopTitleView (VerticalScrolViewLayout bodyView, bool isScene = false) {
+ var chooseTypeView = new RowLayout () {
+ Height = Application.GetRealHeight (80),
+ BackgroundColor = SkinStyle.Current.TitileView,
+ };
+ bodyView.AddChidren (chooseTypeView);
+ Button btnEquipmentIcon = new Button () {
+ Width = Application.GetRealHeight (65),
+ Height = Application.GetRealHeight (65),
+ UnSelectedImagePath = "Item/LogicModule.png",
+ X = Application.GetRealWidth (30),
+ Gravity = Gravity.CenterVertical,
+ };
+ chooseTypeView.AddChidren (btnEquipmentIcon);
+
+ Button btnEquipmentType = new Button () {
+ Width = Application.GetRealHeight (460),
+ X = btnEquipmentIcon.Right,
+ TextAlignment = TextAlignment.CenterLeft,
+ Text = Language.StringByID (R.MyInternationalizationString.Device),
+ TextColor = SkinStyle.Current.TextColor1,
+ SelectedTextColor = SkinStyle.Current.DialogTextColor
+ };
+ chooseTypeView.AddChidren (btnEquipmentType);
+
+ if (isScene) {
+ btnEquipmentIcon.UnSelectedImagePath = "Scene/Scene.png";
+ btnEquipmentType.Text = Language.StringByID (R.MyInternationalizationString.Scenes);
+ }
+ }
/// <summary>
/// 娣诲姞璁惧鐣岄潰
@@ -550,6 +768,12 @@
public void InitDevcieRow (List<UpdateDeviceObj> list, VerticalScrolViewLayout bodyView)
{
bodyView.RemoveAll ();
+
+ if (list.Count > 0) {
+ //娣诲姞鏍囬
+ AddTopTitleView (bodyView);
+ }
+
foreach (var device in list) {
var rowView = new RowLayout () {
Height = Application.GetRealHeight (110),
@@ -575,10 +799,31 @@
alert.Show ();
alert.ResultEventHandler += (s, dd) => {
if (dd) {
- if (DelDevice (device.Id)) {
- rowView.RemoveFromParent ();
- list.Remove (device);
- }
+ //if (DelDevice (device.Id)) {
+ // rowView.RemoveFromParent ();
+ // list.Remove (device);
+ //}
+
+ System.Threading.Tasks.Task.Run (() => {
+ Application.RunOnMainThread (() => {
+ MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
+ });
+ try {
+ var result = DelDevice (device.Id);
+ Application.RunOnMainThread (() => {
+ if (result) {
+ rowView.RemoveFromParent ();
+ list.Remove (device);
+ }
+ });
+
+ } catch { } finally {
+
+ Application.RunOnMainThread (() => {
+ MainPage.Loading.Hide ();
+ });
+ }
+ });
}
};
};
@@ -590,6 +835,11 @@
/// </summary>
public void InitSceneRow (List<SceneByRegion> list, VerticalScrolViewLayout bodyView)
{
+ if (list.Count > 0) {
+ //娣诲姞鏍囬
+ AddTopTitleView (bodyView, true);
+ }
+
foreach (var scene in list) {
var rowView = new RowLayout () {
Height = Application.GetRealHeight (110),
@@ -621,10 +871,31 @@
alert.Show ();
alert.ResultEventHandler += (s, dd) => {
if (dd) {
- if (DelScene (scene.SceneId)) {
- rowView.RemoveFromParent ();
- list.Remove (scene);
- }
+ //if (DelScene (scene.SceneId)) {
+ // rowView.RemoveFromParent ();
+ // list.Remove (scene);
+ //}
+
+ System.Threading.Tasks.Task.Run (() => {
+ Application.RunOnMainThread (() => {
+ MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
+ });
+ try {
+ var result = DelScene (scene.SceneId);
+ Application.RunOnMainThread (() => {
+ if (result) {
+ rowView.RemoveFromParent ();
+ list.Remove (scene);
+ }
+ });
+
+ } catch { } finally {
+
+ Application.RunOnMainThread (() => {
+ MainPage.Loading.Hide ();
+ });
+ }
+ });
}
};
};
--
Gitblit v1.8.0