获取云机上已安装的应用列表
方法名称
void getInstalledApps(GetAppsReq getAppsReq)
功能描述
获取云机上已安装的应用列表。该方法用于查询云机上已安装的应用程序。
参数说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| getAppsReq | GetAppsReq | 获取应用请求对象 |
getAppsReq结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| appType | AppTypeEnum | 应用类型筛选,必填。枚举值:
|
| 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 | 应用是否准备就绪(可启动状态)
|
| 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"
}