/// <summary>
        /// 拨打电话
        /// 只支持调出拨打电话询问界面,不支持拨打电话结果状态的获取
        /// </summary>
        public void initiateVoiceCall(string options)
        {
            string phoneNumber;
            try
            {
                string[] args = JSON.JsonHelper.Deserialize<string[]>(options);
                phoneNumber = args[0];
                //check args not empty
                if (phoneNumber.Length > 0) { };
            }
            catch (Exception ex)
            {
                if (ex is ArgumentOutOfRangeException || ex is ArgumentNullException)
                {
                    XLog.WriteError("initiateVoiceCall args error " + ex.Message);
                    DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR));
                    return;
                }
                throw (ex);
            }

            if (!IsTelePhoneNumber(phoneNumber))
            {
                XLog.WriteError("initiateVoiceCall args error: invalid phoneNumber " + phoneNumber);
                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR));
                return;
            }

            XSystemTask task = new XSystemTask();
            task.OpenPhoneCall(phoneNumber, null);
            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
        }
        /// <summary>
        /// 发送信息(目前支持发送短信和邮件)
        /// 只支持调用发送信息界面,不支持发送状态结果的获取
        /// </summary>
        public void sendMessage(string options)
        {
            string messageType = "";
            string destAddr = "";
            string messageBody = "";
            string subject = "";

            try
            {
                string[] args = JSON.JsonHelper.Deserialize<string[]>(options);
                if (args.Length > 0) messageType = args[0];//信息的类型(目前支持SMS和Email两种)
                if (args.Length > 1) destAddr = args[1];//要发送的目的地址
                if (args.Length > 2) messageBody = args[2];//要发送的信息内容
                if (args.Length > 3) subject = args[3];//要发送的信息标题(发送邮件时会使用)
            }
            catch (Exception ex)
            {
                if (ex is ArgumentNullException || ex is ArgumentOutOfRangeException)
                {
                    XLog.WriteError("sendMessage args error " + ex.Message);
                    DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR));
                    return;
                }
                throw (ex);
            }

            if (messageType.Equals(MESSAGE_TYPE_SMS))
            {
                XSystemTask task = new XSystemTask();
                task.OpenSendSms(destAddr, messageBody);
                DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
            }
            else if (messageType.Equals(MESSAGE_TYPE_EMAIL))
            {
                XSystemTask task = new XSystemTask();
                task.OpenSendEmail(subject, messageBody, new string[] { destAddr });
                DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
            }
            else
            {
                XLog.WriteError("sendMessage args error unkonw messageType");
                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR));
            }
        }