
# 获取云机上已安装的应用列表
#### 方法名称
void getInstalledApps(GetAppsReq getAppsReq)
#### 功能描述
获取云机上已安装的应用列表。该方法用于查询云机上已安装的应用程序。
#### 参数说明
| 字段名        | 类型         | 说明       |
|:---|:---|:---|
| getAppsReq | GetAppsReq | 获取应用请求对象 |
   
getAppsReq结构
| **参数名**  | **类型**      | 说明                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| appType  | AppTypeEnum | 应用类型筛选，必填。枚举值： - SYSTEM_APP：系统应用  - THIRD_APP：第三方应用  - BOTH：全部   |
| quality  | Integer     | 图标质量参数，选填。取值范围0-100，默认100，建议设为70\~85以平衡清晰度与大小                                                                                                                                                                                                                                                                     |
| pageNum  | Integer     | 分页页码，必填。从1开始，需配合pageSize使用                                                                                                                                                                                                                                                                                        |
| pageSize | Integer     | 分页大小，必填。最大支持20条/页                                                                                                                                                                                                                                                                                                 |
| needIcon | Boolean     | 是否返回图标，必填。true返回图标数据/URL，false不返回图标相关字段                                                                                                                                                                                                                                                                           |
   
#### 返回值
无
#### 回调参数
| **字段**     | **类型**     | 说明        |
|:---|:---|:---|
| error_code | String     | 状态码，0表示成功 |
| error_msg  | String     | 错误详情      |
| data       | GetAppsRsp | 磁盘使用数据对象  |
   
回调接口通过CloudPhoneClient.setAppCallback(CloudPhoneClient.Callback.AppCallback callback)注册，回调参数为AppOperateResponse\<GetAppsRsp\>，其中GetAppsRsp结构如下：
| **参数名**    | **类型**  | 说明              |
|:---|:---|:---|
| appList    | List    | 应用列表（分页数据）      |
| totalCount | Integer | 符合筛选条件的应用总数     |
| pageNum    | Integer | 当前分页页码（与请求参数一致） |
| pageSize   | Integer | 当前分页大小（与请求参数一致） |
   
CloudAppInfo应用详情结构如下：
| **参数名**     | **类型**  | 说明                                                                                                                                                                                                                                 |
|:---|:---|:---|
| appName     | String  | 应用名称，如"微信"、"设置"                                                                                                                                                                                                                    |
| packageName | String  | 应用包名（唯一标识），示例：com.tencent.mm                                                                                                                                                                                                       |
| icon        | String  | WebP格式图标原始数据Base64编码，仅当needIcon=true时可能返回，null表示无数据                                                                                                                                                                                |
| iconUrl     | String  | WebP格式图标URL，端侧优先使用此字段，无值时fallback到icon字节数组                                                                                                                                                                                         |
| isReady     | Boolean | 应用是否准备就绪（可启动状态） - true：应用可正常使用  - false：未安装完成或异常状态   |
| versionName | String  | 应用外部版本号，示例：1.1.1                                                                                                                                                                                                                   |
| versionCode | long    | 应用内部版本号，示例：111                                                                                                                                                                                                                     |
| size        | long    | 应用大小，示例：1048                                                                                                                                                                                                                       |
   
#### 调用示例
```
/ 1. 创建请求对象并设置参数 
GetAppsReq req = new GetAppsReq(); 
req.setAppType(AppTypeEnum.THIRD_APP);  // 筛选第三方应用 
req.setQuality(80);  // 图标质量设为80（平衡清晰度与大小） 
req.setPageNum(1);  // 查询第1页 
req.setPageSize(10);  // 每页10条数据 
req.setNeedIcon(true);  // 需要返回图标 
 
// 2. 注册回调接口（建议在初始化时注册一次） 
CloudPhoneClient.setAppCallback(new  CloudPhoneClient.Callback.AppCallback() { 
    @Override 
    public void onGetInstalledApps(AppOperateResponse<GetAppsRsp> response) { 
        if (response.isSuccess())  { 
            GetAppsRsp rsp = response.getData();  
            List<CloudAppInfo> apps = rsp.getAppList();  
            // 处理应用列表数据（如展示名称、包名、图标等） 
            for (CloudAppInfo app : apps) { 
                String appName = app.getAppName();  
                String packageName = app.getPackageName();  
                String iconUrl = app.getIconUrl();  // 优先使用URL 
                byte[] iconBytes = app.getIcon();  // URL为空时使用字节数组 
                boolean isReady = app.getIsReady();  
                // ... 业务逻辑处理 
            } 
        } else { 
            // 处理接口调用失败（如网络异常、参数错误等） 
            String errorMsg = response.getErrorMsg();  
            int errorCode = response.getErrorCode();  
        } 
    } 
}); 
 
// 3. 调用接口 
CloudPhoneClient.getInstalledApps(req);
```
#### 响应示例
```
{
"success": true,
"data": {
"appList": [
{
"appName": "微信",
"packageName": "com.tencent.mm",
"icon": null, // 当iconUrl存在时，icon可能为null
"iconUrl": "https://example.com/icons/wechat.webp",
"versionName": "xxx",
"versionCode": 123,
"size": 1234453,
"isReady": true
},
{
"appName": "支付宝",
"packageName": "com.eg.android.AlipayGphone",
"icon": null,
"iconUrl": "https://example.com/icons/alipay.webp",
"versionName": "xxx",
"versionCode": 123,
"size": 1234453,
"isReady": true
}
// ... 更多应用（最多10条，与pageSize一致）
],
"totalCount": 25, // 符合条件的第三方应用总数
"pageNum": 1,
"pageSize": 10
},
"errorCode": 0,
"errorMsg": "success"
}
```
