/// <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; })); }
/// <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(); })); }
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; }
/// <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(); })); }
/// <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(); } })); }
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); }