Ejemplo n.º 1
0
 /// <summary>
 /// 指定したAndroidデバイスから、指定したパッケージ名のアプリの強制終了を試行
 /// </summary>
 /// <param name="device"></param>
 /// <param name="package"></param>
 /// <param name="progress"></param>
 /// <returns></returns>
 public Task <bool> StopPackage(Device device, PackageData package, IProgress <AdbProgressData> progress)
 {
     return(ProgressWrap("アプリケーション停止処理", progress, async() => {
         var result = await Cmd(device, "shell am force-stop", package.Name);
         return true;
     }));
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 指定したAndroidデバイスから、指定したパッケージ名のAPKファイルをダウンロー</summary>
 /// <param name="device"></param>
 /// <param name="package"></param>
 /// <param name="progress"></param>
 /// <returns></returns>
 public Task <bool> DownloadApk(Device device, PackageData package, string path, IProgress <AdbProgressData> progress)
 {
     return(ProgressWrap("APKダウンロード", progress, async() => {
         var result = await Cmd(device, "pull", package.ApkPath, path);
         var isSuccess = result.LastOrDefault()?.IndexOf("pulled") >= 0;
         if (isSuccess)
         {
             return true;
         }
         throw new Exception();
     }));
 }
Ejemplo n.º 3
0
        private void PackageDataGridCellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
        {
            if (e.RowIndex < 0 || e.RowIndex >= packageDataGrid.RowCount)
            {
                return;
            }

            var dataRow = packageDataGrid.Rows[e.RowIndex];

            dataRow.Cells[0].Selected = true;
            _selectPackage            = dataRow.DataBoundItem as PackageData;
            e.ContextMenuStrip        = this.PackageCellContextMenuStrip;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 指定したAndroidデバイスから、指定したパッケージ名のアプリの起動
        /// </summary>
        /// <param name="device"></param>
        /// <param name="package"></param>
        /// <param name="progress"></param>
        /// <returns></returns>
        public Task <bool> LunchPackage(Device device, PackageData package, IProgress <AdbProgressData> progress)
        {
            return(ProgressWrap("アプリケーション起動", progress, async() => {
                var dumpResult = await Cmd(device, "shell", $"\"pm dump {package.Name} | grep -A 2 android.intent.action.MAIN | head -2 | tail -1\"");
                var packageActivityName = dumpResult[1].Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).ElementAtOrDefault(1);
                var result = await Cmd(device, "shell am start", "-n", packageActivityName);

                var isSuccess = result.FirstOrDefault()?.IndexOf("Success") >= 0 || result.FirstOrDefault()?.IndexOf("Starting") >= 0;
                if (isSuccess)
                {
                    return true;
                }
                throw new Exception();
            }));
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 指定したAndroidデバイスから指定したパッケージ名のアプリのアンインストール
 /// </summary>
 /// <param name="device"></param>
 /// <param name="package"></param>
 /// <param name="progress"></param>
 /// <returns></returns>
 public Task <bool> UnInstallPackage(Device device, PackageData package, IProgress <AdbProgressData> progress)
 {
     return(ProgressWrap("アンインストール", progress, async() => {
         using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10)))
         {
             var result = await Cmd(cts.Token, device, "uninstall", package.Name);
             var isSuccess = result.FirstOrDefault()?.IndexOf("Success") >= 0;
             if (isSuccess)
             {
                 return true;
             }
             throw new Exception();
         }
     }));
 }
Ejemplo n.º 6
0
        private void DataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || e.RowIndex >= packageDataGrid.RowCount)
            {
                return;
            }

            var dataRow = packageDataGrid.Rows[e.RowIndex];

            dataRow.Cells[0].Selected = true;
            _selectPackage            = dataRow.DataBoundItem as PackageData;

            var result = MessageBox.Show($"{_selectPackage.Name} を起動してよろしいですか?", "起動確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);

            if (result == DialogResult.Cancel)
            {
                return;
            }

            _adb.LunchPackage(_targetDevice, _selectPackage, progress);
        }