Files
Obsidian/项目文档/徐工/语音/应用列表JSON组装说明.md
2026-11-05 14:35:04 +08:00

85 lines
2.6 KiB
Markdown

| 项目 | 值 | 类型 |
| --- | --- | --- |
| 请求名称 | `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<PackageInfo> 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<String, String> 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());
});
}
```