| 项目 | 值 | 类型 | | --- | --- | --- | | 请求名称 | `syncAppList` | String | | 参数名称 | `appList` | String | | 参数内容 | 应用列表 JSON 字符串 | String | ```java BundleMutablePayload params = new BundleMutablePayload(); params.putString("appList", appListJson); Request request = new Request("syncAppList", params); sendCommandTxz(request); ``` 注意:`appList` 参数本身是一个字符串,字符串内容才是应用列表 JSON,不是直接向参数中放入 JSON 对象。 ##应用列表 JSON 格式 ```json { "list": [ { "app.name": "空调", "app.package": "com.yaxon.hvac" }, { "app.name": "音乐", "app.package": "com.yaxon.music" } ] } ``` ### 3.3 字段定义 | 字段 | 类型 | 是否必填 | 说明 | | --- | --- | --- | --- | | `list` | JSON Array | 是 | 应用信息数组 | | `app.name` | String | 是 | 提供给语音识别使用的应用名称 | | `app.package` | String | 是 | 应用包名或约定的应用功能标识 | 每个应用元素当前只包含 `app.name` 和 `app.package` 两个字段。 ```java private void scanNativeApp() { mThreadPoolTool.execute(() -> { JsonHelper jsonHelper = new JsonHelper(); PackageManager packageManager = YxApplication.getApplication().getPackageManager(); List packageInfoList = packageManager.getInstalledPackages(0); JSONArray jsonArray = jsonHelper.createJsonArray(); for (PackageInfo packageInfo : packageInfoList) { ApplicationInfo applicationInfo = packageInfo.applicationInfo; String appName = applicationInfo.loadLabel(packageManager).toString(); String packageName = packageInfo.packageName; if (mAppInfoMap.containsKey(packageName)) { appName = mAppInfoMap.get(packageName); } JSONObject item = jsonHelper.createJsonObject( new Pair<>("app.name", appName), new Pair<>("app.package", packageName)); if (item != null) { jsonArray.put(item); } } for (Map.Entry app : mCustomAppMap.entrySet()) { JSONObject item = jsonHelper.createJsonObject( new Pair<>("app.name", app.getValue()), new Pair<>("app.package", app.getKey())); if (item != null) { jsonArray.put(item); } } jsonHelper.putJsonArray("list", jsonArray); VoiceManager.VOICE_EVENT_HELPER .sendAppListScanComplete(jsonHelper.toJson()); }); } ```