
# 启动应用
#### 方法名称
String startApp(String packageName)
#### 功能描述
启动指定包名的应用。该方法用于在云机上启动指定的应用程序。
#### 参数说明
| 字段名         | 类型     | 说明   |
|:---|:---|:---|
| packageName | String | 应用包名 |
   
#### 返回值
String：本次startApp指令的请求id。
#### 回调参数
AppOperateResponse结构：
| **字段**      | **类型** | 说明                                                   |
|:---|:---|:---|
| error_code  | String | 错误码，0表示成功                                            |
| error_msg   | String | 错误详情                                                 |
| response_id | String | 本次startApp指令的返回id，与调用startApp方法时的请求id一致，用于将请求与返回进行关联 |
| data        | String | 包名**com.tencent.mm**，失败返回为空                          |
   
#### 调用示例
```
// 1. 实现回调接口
CloudPhoneClient.Callback.AppCallback callback = new CloudPhoneClient.Callback.AppCallback() {
@Override
public void onStartApp(AppOperateResponse<Void> response) {
if ("0".equals(response.getError_code()))  {
System.out.println(" 启动成功");
} else {
System.err.println(" 启动失败: " + response.getError_msg());
}
}
};
// 2. 注册回调
CloudPhoneClient.setAppCallback(callback);
// 3. 构造启动参数（通过类名启动）
AppParams params1 = new AppParams();
params1.setClazz("com.tencent.mm.ui.LauncherUI");
params1.setIntents(new  HashMap<String, Object>() {{
put("scene", "chat");
}});
String reqID = CloudPhoneClient.startApp(params1);
// 或通过Scheme启动
AppParams params2 = new AppParams();
params2.setPackageName("qq.live");
params2.setScheme("weixin://scanqrcode");
String reqID2 = CloudPhoneClient.startApp(params2);
```
#### 响应示例
```
// 成功响应
{
"error_code": "0",
"error_msg": "success",
"response_id": "1778049424514_1"
}
// 失败响应（应用未安装）
{
"error_code": "404",
"error_msg": "Target app not installed"
}
```
