예제 #1
0
        /// <summary>
        /// 安装Apk,先检测是否安装过相应版本
        /// </summary>
        /// <param name="path"></param>
        /// <param name="option"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public bool Install(string path, string option = null, Action <ErrorResult> error = null)
        {
            var flag = true;
            // 上传Apk
            var are  = new AutoResetEvent(false);
            var sync = new SyncHandler(serial)
            {
                Exit = success =>
                {
                    flag = success;
                    are.Set();
                }
            };

            sync.BeginPush(path, "/data/local/tmp/base.apk", 0100777, error ?? this.error);
            // 等待文件上传成功
            are.WaitOne();
            if (!flag)
            {
                return(flag);
            }
            // 执行安装命令
            var cmd = $"pm install {option} /data/local/tmp/base.apk";
            var res = ShellExecuter.Execute(serial, cmd, error ?? this.error);

            flag = !string.IsNullOrEmpty(res) && res.Contains("Success");
            return(flag);
        }
예제 #2
0
        public void Runbatch()
        {
            string workingDir = TestContext.DataRow["workingDir"].ToString();
            string command    = TestContext.DataRow["command"].ToString();

            ShellExecuter.ShellCommandExecute(command, workingDir);
        }
예제 #3
0
        /// <summary>
        /// 检测是否已经安装
        /// </summary>
        /// <param name="package">包名</param>
        /// <param name="version">版本号</param>
        /// <param name="error"></param>
        /// <returns></returns>
        public bool CheckInstall(string package, string version, Action <ErrorResult> error)
        {
            // var cmd = "pm list packages | grep " + package;
            // const string cmd = "pm list packages";
            var cmd = "dumpsys package " + package;
            var res = ShellExecuter.Execute(serial, cmd, error);

            return(!string.IsNullOrEmpty(res) && res.Contains("versionName=" + version));
        }
예제 #4
0
        /// <summary>
        /// 启动软件
        /// </summary>
        /// <param name="package"></param>
        /// <param name="error"></param>
        public bool Launch(string package, Action <ErrorResult> error)
        {
            // 已经在运行,直接返回结果
            if (IsRunning(package, error))
            {
                return(true);
            }
            // 执行启动命令
            var cmd = $"monkey -p {package} -c android.intent.category.LAUNCHER 1";
            var str = ShellExecuter.Execute(serial, cmd, error);

            // 判断是否启动成功
            return(IsRunning(package, error));
        }
예제 #5
0
        /// <summary>
        /// 判断给定的Activity是否在最前端
        /// </summary>
        /// <param name="package"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public bool IsOnTop(string package, Action <ErrorResult> error)
        {
            var          flag = false;
            const string cmd  = "dumpsys activity activities";
            var          res  = ShellExecuter.Execute(serial, cmd, error);

            if (string.IsNullOrEmpty(res))
            {
                return(false);
            }
            foreach (var line in res.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries))
            {
                flag = line.Trim().StartsWith("mFocusedActivity") && line.Contains(package);
                if (flag)
                {
                    break;
                }
            }
            return(flag);
        }
예제 #6
0
        /// <summary>
        /// 设备是否被ROOT过
        /// </summary>
        /// <returns></returns>
        public bool IsRoot()
        {
            var str = ShellExecuter.SuExecute(serial, "lsd", error);

            return(!string.IsNullOrEmpty(str) && str.ToLower().Contains("root"));
        }
예제 #7
0
 /// <summary>
 /// 获取设备配置信息
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 public string GetProp(string name)
 {
     return(ShellExecuter.Execute(serial, "getprop " + name, error));
 }