bool CheckXiaomiPackageVersions() { if (isVersionInitialized) { return(true); } NativeStatusCode getCurrentVersionOperationStatus; if (getCurrentVersionOperationId < 0) { getCurrentVersionOperationStatus = NativeClient.List(out getCurrentVersionOperationId); } else { getCurrentVersionOperationStatus = NativeClient.GetOperationStatus(getCurrentVersionOperationId); } // Reset and return false if it fails with StatusCode.Error or Status.NotFound. if (getCurrentVersionOperationStatus > NativeStatusCode.Done) { getCurrentVersionOperationId = -1; return(false); } NativeStatusCode getLatestVersionOperationStatus; if (getLatestVersionOperationId < 0) { getLatestVersionOperationStatus = NativeClient.Search(out getLatestVersionOperationId, xiaomiPackageName); } else { getLatestVersionOperationStatus = NativeClient.GetOperationStatus(getLatestVersionOperationId); } // Reset and return false if it fails with StatusCode.Error or Status.NotFound. if (getLatestVersionOperationStatus > NativeStatusCode.Done) { getLatestVersionOperationId = -1; return(false); } // Get version info if both operations are done. if (getCurrentVersionOperationStatus == NativeStatusCode.Done && getLatestVersionOperationStatus == NativeStatusCode.Done) { CheckPackmanOperation(getCurrentVersionOperationId, PackmanOperationType.List); CheckPackmanOperation(getLatestVersionOperationId, PackmanOperationType.Search); System.Console.WriteLine("Current xiaomi package version is " + (string.IsNullOrEmpty(currentXiaomiPackageVersion) ? "empty" : currentXiaomiPackageVersion)); System.Console.WriteLine("Latest xiaomi package version is " + (string.IsNullOrEmpty(latestXiaomiPackageVersion) ? "empty" : latestXiaomiPackageVersion)); isVersionInitialized = true; return(true); } return(false); }
bool CheckPackmanOperation(long operationId, PackmanOperationType operationType) { NativeStatusCode statusCode = NativeClient.GetOperationStatus(operationId); if (statusCode == NativeStatusCode.NotFound) { Debug.LogError("OperationID " + operationId + " Not Found"); return(true); } else if (statusCode == NativeStatusCode.Error) { Error error = NativeClient.GetOperationError(operationId); Debug.LogError("OperationID " + operationId + " failed with Error: " + error); return(true); } else if (statusCode == NativeStatusCode.InProgress || statusCode == NativeStatusCode.InQueue) { return(false); } else if (statusCode == NativeStatusCode.Done) { System.Console.WriteLine("OperationID " + operationId + " Done"); switch (operationType) { case PackmanOperationType.List: ExtractCurrentXiaomiPackageInfo(operationId); break; case PackmanOperationType.Add: currentXiaomiPackageVersion = latestXiaomiPackageVersion; xiaomiPackageInstalled = true; break; case PackmanOperationType.Remove: currentXiaomiPackageVersion = ""; xiaomiPackageInstalled = false; break; case PackmanOperationType.Search: ExtractLatestXiaomiPackageInfo(operationId); break; default: System.Console.WriteLine("Type " + operationType + " Not Supported"); break; } return(true); } return(true); }