app_management/
app_management.rs

1use adb_kit::{ADB, prelude::*};
2
3fn main() -> ADBResult<()> {
4    let adb = ADB::new(None);
5
6    // 列出设备
7    let devices = adb.list_devices()?;
8    if devices.is_empty() {
9        println!("没有连接的设备");
10        return Ok(());
11    }
12
13    let device_id = &devices[0].id;
14    println!("使用设备: {}", device_id);
15
16    // 列出已安装的第三方应用
17    let apps = adb.list_packages(device_id, false, true)?;
18    println!("已安装的第三方应用数量: {}", apps.len());
19
20    if !apps.is_empty() {
21        let app = &apps[0];
22        println!("选择应用: {}", app);
23
24        // 获取应用信息
25        let info = adb.get_package_info(device_id, app)?;
26        println!("应用信息:");
27        println!("  版本名称: {:?}", info.version_name);
28        println!("  版本代码: {:?}", info.version_code);
29        println!("  安装时间: {:?}", info.install_time);
30        println!("  权限数量: {}", info.permissions.len());
31
32        // 检查应用是否在运行
33        let (running, pid) = adb.is_package_running(device_id, app)?;
34        println!("应用运行状态: {}, PID: {:?}", running, pid);
35
36        // 启动应用
37        if !running {
38            println!("启动应用...");
39            let success = adb.start_app(device_id, app, None)?;
40            println!("启动结果: {}", success);
41
42            // 等待应用启动
43            std::thread::sleep(std::time::Duration::from_secs(2));
44
45            // 再次检查应用是否在运行
46            let (running, pid) = adb.is_package_running(device_id, app)?;
47            println!("应用运行状态: {}, PID: {:?}", running, pid);
48        }
49
50        // 停止应用
51        if running {
52            println!("停止应用...");
53            adb.stop_app(device_id, app)?;
54
55            // 等待应用停止
56            std::thread::sleep(std::time::Duration::from_secs(1));
57
58            // 再次检查应用是否在运行
59            let (running, _) = adb.is_package_running(device_id, app)?;
60            println!("应用运行状态: {}", running);
61        }
62    }
63
64    Ok(())
65}