@doubao-dev/plugin-app-dev 0.0.0-stage → 0.0.40-canary-dea0ddc73-20261026073950

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +10 -2
  2. package/dist/147.js +9 -0
  3. package/dist/assets.d.ts +5 -0
  4. package/dist/assets.js +4 -0
  5. package/dist/index.d.ts +43 -0
  6. package/dist/index.js +1378 -0
  7. package/dist/plugin.d.ts +102 -0
  8. package/dist/plugin.js +4995 -0
  9. package/dist/preview.js +16 -0
  10. package/dist/rslib-runtime.js +33 -0
  11. package/dist/skills/doubao-plugin-app/SKILL.md +21 -0
  12. package/dist/skills/doubao-plugin-app/references/app-development.md +85 -0
  13. package/dist/skills/doubao-plugin-app/references/frontend/components/container-overlay.md +131 -0
  14. package/dist/skills/doubao-plugin-app/references/frontend/components/form-controls.md +146 -0
  15. package/dist/skills/doubao-plugin-app/references/frontend/components/interactive-controls.md +120 -0
  16. package/dist/skills/doubao-plugin-app/references/frontend/components/map-canvas.md +107 -0
  17. package/dist/skills/doubao-plugin-app/references/frontend/components/overview.md +43 -0
  18. package/dist/skills/doubao-plugin-app/references/frontend/components/scroll-list.md +149 -0
  19. package/dist/skills/doubao-plugin-app/references/frontend/components/text-media.md +209 -0
  20. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +1389 -0
  21. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +1376 -0
  22. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/03-/350/207/252/345/256/232/344/271/211/351/200/232/344/277/241.md +127 -0
  23. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/04-/345/256/232/344/275/215.md +784 -0
  24. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/05-/345/255/230/345/202/250.md +1176 -0
  25. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/06-/350/267/257/347/224/261.md +839 -0
  26. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/07-/347/225/214/351/235/242.md +376 -0
  27. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/08-/344/272/244/344/272/222.md +1319 -0
  28. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/09-/350/276/223/345/205/245.md +192 -0
  29. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/10-/347/275/221/347/273/234.md +900 -0
  30. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/11-/345/252/222/344/275/223.md +1496 -0
  31. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/12-/344/270/232/345/212/241/350/203/275/345/212/233.md +1281 -0
  32. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/13-/347/231/273/345/275/225.md +511 -0
  33. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/14-/346/224/257/344/273/230.md +943 -0
  34. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/15-/346/225/260/346/215/256/345/210/206/346/236/220.md +124 -0
  35. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/16-/350/223/235/347/211/231.md +3364 -0
  36. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/17-wi-fi.md +1028 -0
  37. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/18-/345/212/240/351/200/237/345/272/246/350/256/241.md +354 -0
  38. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/19-ibeacon.md +508 -0
  39. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/20-/347/275/227/347/233/230.md +320 -0
  40. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/21-/350/256/276/345/244/207/346/226/271/345/220/221.md +351 -0
  41. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/22-/351/231/200/350/236/272/344/273/252.md +354 -0
  42. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/23-/345/252/222/344/275/223-/350/256/276/345/244/207-/347/275/221/347/273/234.md +264 -0
  43. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/24-/347/237/255/344/277/241.md +155 -0
  44. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/25-/346/227/240/351/232/234/347/242/215.md +144 -0
  45. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/26-/345/237/272/347/241/200/344/277/241/346/201/257.md +238 -0
  46. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/27-/347/224/265/346/261/240.md +235 -0
  47. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/28-/345/211/252/350/264/264/346/235/277.md +303 -0
  48. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/29-/345/212/240/345/257/206.md +126 -0
  49. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/30-/346/227/245/345/216/206.md +417 -0
  50. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/31-/347/224/265/350/257/235.md +144 -0
  51. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/32-/346/211/253/347/240/201.md +236 -0
  52. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/33-/345/261/217/345/271/225.md +747 -0
  53. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/34-/351/234/207/345/212/250.md +277 -0
  54. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/35-/346/226/207/344/273/266/347/263/273/347/273/237.md +431 -0
  55. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/common-errors.md +69 -0
  56. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/groups.md +43 -0
  57. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/quick-reference.md +436 -0
  58. package/dist/skills/doubao-plugin-app/references/frontend/examples/common-patterns.md +590 -0
  59. package/dist/skills/doubao-plugin-app/references/frontend/examples/doubao-agentic-service-api-recipes.md +209 -0
  60. package/dist/skills/doubao-plugin-app/references/frontend/examples/page-widget-basics.md +368 -0
  61. package/dist/skills/doubao-plugin-app/references/frontend/examples/page-widget-recipes.md +65 -0
  62. package/dist/skills/doubao-plugin-app/references/frontend/framework/core.md +283 -0
  63. package/dist/skills/doubao-plugin-app/references/frontend/guides/auth.md +277 -0
  64. package/dist/skills/doubao-plugin-app/references/frontend/guides/best-practices.md +574 -0
  65. package/dist/skills/doubao-plugin-app/references/frontend/guides/client-tools-and-events.md +209 -0
  66. package/dist/skills/doubao-plugin-app/references/frontend/guides/component-development.md +832 -0
  67. package/dist/skills/doubao-plugin-app/references/frontend/guides/debugger-mcp.md +537 -0
  68. package/dist/skills/doubao-plugin-app/references/frontend/guides/expired-widget.md +101 -0
  69. package/dist/skills/doubao-plugin-app/references/frontend/guides/performance-optimization.md +417 -0
  70. package/dist/skills/doubao-plugin-app/references/frontend/guides/troubleshooting.md +278 -0
  71. package/dist/skills/doubao-plugin-app/references/frontend/lynx/best-practices.md +720 -0
  72. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/pseudo-classes.md +149 -0
  73. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/selectors.md +224 -0
  74. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/supported-properties.md +269 -0
  75. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/values-and-units.md +314 -0
  76. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/flex-layout.md +334 -0
  77. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/grid-layout.md +408 -0
  78. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/linear-layout.md +355 -0
  79. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/relative-layout.md +189 -0
  80. package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/css-differences.md +737 -0
  81. package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/migration-guide.md +669 -0
  82. package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/unsupported-features.md +290 -0
  83. package/dist/skills/doubao-plugin-app/references/frontend/lynx/overview.md +60 -0
  84. package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/animation.md +243 -0
  85. package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/responsive.md +194 -0
  86. package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/theming.md +143 -0
  87. package/dist/skills/doubao-plugin-app/references/frontend/lynx/quick-reference.md +229 -0
  88. package/dist/skills/doubao-plugin-app/references/frontend/rules/dos-and-donts.md +479 -0
  89. package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/design-boundary.md +46 -0
  90. package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/overview.md +118 -0
  91. package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/props.md +301 -0
  92. package/dist/skills/doubao-plugin-app/references/mcp-and-cards.md +38 -0
  93. package/dist/templates/README.md.template +11 -0
  94. package/dist/templates/com.doubao/app/manifest.yaml +41 -0
  95. package/dist/templates/com.doubao/app/package.json.template +13 -0
  96. package/dist/templates/com.doubao/app/src/app.config.ts.template +5 -0
  97. package/dist/templates/com.doubao/app/src/app.ts.template +3 -0
  98. package/dist/templates/com.doubao/app/src/pages/home/index.css +14 -0
  99. package/dist/templates/com.doubao/app/src/pages/home/index.tsx.template +14 -0
  100. package/dist/templates/com.doubao/app/src/widgets/example/index.tsx.template +29 -0
  101. package/dist/templates/com.doubao/app/tsconfig.json +19 -0
  102. package/dist/templates/mcp.json +9 -0
  103. package/dist/templates/plugin.json.template +29 -0
  104. package/dist/templates/skills/example/SKILL.md.template +14 -0
  105. package/dist/upload.d.ts +44 -0
  106. package/dist/upload.js +38 -0
  107. package/package.json +60 -3
@@ -0,0 +1,431 @@
1
+ # 豆包应用插件的端能力 API: 文件系统
2
+
3
+ 文件读写、目录管理和文件信息操作。
4
+
5
+ [返回目录](./groups.md) | [返回速查](./quick-reference.md)
6
+
7
+ ## 速查
8
+
9
+ | API | 说明 |
10
+ | --- | --- |
11
+ | [getFileSystemManager](#getfilesystemmanager) | 获取文件系统管理器。 |
12
+
13
+ ## API 详情
14
+
15
+ <a id="getfilesystemmanager"></a>
16
+ ### getFileSystemManager()
17
+
18
+ # getFileSystemManager
19
+
20
+ 获取文件系统管理器。
21
+
22
+ ## 扫码预览
23
+ ![扫码预览 getFileSystemManager](https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=doubao%3A%2F%2Fdoubao_apps%3Fapp_id%3Ddb_1McM5Ni%26path%3D%252Fpages%252Fapi%252Ffile-system%252Fget-file-system-manager%252Findex)
24
+
25
+ ## 支持版本
26
+
27
+ 前端库版本不低于 `0.0.31`。
28
+
29
+ ## 支持平台
30
+
31
+ <table>
32
+ <thead>
33
+ <tr><th>平台</th><th>支持情况</th></tr>
34
+ </thead>
35
+ <tbody>
36
+ <tr><td>Android</td><td>支持</td></tr>
37
+ <tr><td>iOS</td><td>支持</td></tr>
38
+ <tr><td>PC</td><td>不支持</td></tr>
39
+ <tr><td>HarmonyOS</td><td>不支持</td></tr>
40
+ </tbody>
41
+ </table>
42
+
43
+ ## 支持场景
44
+
45
+ <table>
46
+ <thead>
47
+ <tr><th>场景</th><th>支持情况</th></tr>
48
+ </thead>
49
+ <tbody>
50
+ <tr><td>页面</td><td>支持</td></tr>
51
+ <tr><td>卡片</td><td>不支持</td></tr>
52
+ </tbody>
53
+ </table>
54
+
55
+ ## 接入准备
56
+
57
+ ### 前置条件
58
+
59
+ - 无额外前置条件,直接调用 getFileSystemManager 获取管理器实例后再调用其方法
60
+
61
+ ## 使用说明
62
+
63
+ - readFile、readFileSync 省略 encoding 时默认返回 Base64 字符串,writeFile、appendFile 省略 encoding 时默认按 UTF-8 写入;需要明确编码时请显式传入 encoding。
64
+
65
+ ## 调用方式
66
+
67
+ ### 同步 API
68
+
69
+ ```typescript
70
+ getFileSystemManager(): FileSystemManager
71
+ ```
72
+
73
+ ## 入参
74
+
75
+ 无。
76
+
77
+ ## 调用示例
78
+
79
+ ```typescript
80
+ import { getFileSystemManager } from '@doubao-dev/framework/api';
81
+
82
+ const fs = getFileSystemManager();
83
+ const { data } = await fs.readFile({
84
+ filePath: '/tmp/profile.json',
85
+ encoding: 'utf-8'
86
+ });
87
+
88
+ console.log(data);
89
+ ```
90
+
91
+ ## 返回值
92
+
93
+ <table>
94
+ <thead>
95
+ <tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
96
+ </thead>
97
+ <tbody>
98
+ <tr><td><code>access</code></td><td><code>(params: AccessParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>判断文件或目录是否存在(异步)。存在时 Promise 兑现,不存在时 Promise 拒绝。</td></tr>
99
+ <tr><td><code>accessSync</code></td><td><code>(params: AccessParams) =&gt; void</code></td><td>是</td><td>判断文件或目录是否存在(同步)。不存在时抛出异常。</td></tr>
100
+ <tr><td><code>appendFile</code></td><td><code>(params: AppendFileParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>在文件末尾追加内容(异步)。文件不存在则创建,不会覆盖已有内容。</td></tr>
101
+ <tr><td><code>appendFileSync</code></td><td><code>(params: AppendFileParams) =&gt; void</code></td><td>是</td><td>在文件末尾追加内容(同步)。文件不存在则创建,不会覆盖已有内容。</td></tr>
102
+ <tr><td><code>copyFile</code></td><td><code>(params: CopyFileParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>复制文件(异步)。仅支持文件,目标已存在同名文件时覆盖。</td></tr>
103
+ <tr><td><code>copyFileSync</code></td><td><code>(params: CopyFileParams) =&gt; void</code></td><td>是</td><td>复制文件(同步)。仅支持文件,目标已存在同名文件时覆盖。</td></tr>
104
+ <tr><td><code>getFileInfo</code></td><td><code>(params: GetFileInfoParams) =&gt; Promise&lt;GetFileInfoResult&gt;</code></td><td>是</td><td>获取文件信息(异步);返回 GetFileInfoResult,含字节大小和可选的摘要。</td></tr>
105
+ <tr><td><code>getSavedFileList</code></td><td><code>() =&gt; Promise&lt;GetSavedFileListResult&gt;</code></td><td>是</td><td>获取已保存的本地文件列表(异步);返回 GetSavedFileListResult,每项含路径、字节大小和毫秒级保存时间。</td></tr>
106
+ <tr><td><code>mkdir</code></td><td><code>(params: MkdirParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>创建目录(异步)。recursive 为 true 时一并创建缺失的上级目录。</td></tr>
107
+ <tr><td><code>mkdirSync</code></td><td><code>(params: MkdirParams) =&gt; void</code></td><td>是</td><td>创建目录(同步)。recursive 为 true 时一并创建缺失的上级目录。</td></tr>
108
+ <tr><td><code>readdir</code></td><td><code>(params: ReaddirParams) =&gt; Promise&lt;ReaddirResult&gt;</code></td><td>是</td><td>读取目录内容(异步);返回 ReaddirResult,files 为目录下的文件与子目录名称(非完整路径,非递归)。</td></tr>
109
+ <tr><td><code>readdirSync</code></td><td><code>(params: ReaddirParams) =&gt; ReaddirResult</code></td><td>是</td><td>读取目录内容(同步);返回 ReaddirResult,files 为目录下的文件与子目录名称(非完整路径,非递归)。</td></tr>
110
+ <tr><td><code>readFile</code></td><td><code>(params: ReadFileParams) =&gt; Promise&lt;ReadFileResult&gt;</code></td><td>是</td><td>读取文件内容(异步);返回 ReadFileResult,其中 data 按 encoding 为 UTF-8 或 Base64 字符串。</td></tr>
111
+ <tr><td><code>readFileSync</code></td><td><code>(params: ReadFileParams) =&gt; ReadFileResult</code></td><td>是</td><td>读取文件内容(同步);返回 ReadFileResult,其中 data 按 encoding 为 UTF-8 或 Base64 字符串。</td></tr>
112
+ <tr><td><code>removeSavedFile</code></td><td><code>(params: RemoveSavedFileParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>删除通过 saveFile 保存的本地文件(异步)。</td></tr>
113
+ <tr><td><code>rename</code></td><td><code>(params: RenameParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>重命名或移动文件(异步)。目标已存在同名文件时覆盖。</td></tr>
114
+ <tr><td><code>renameSync</code></td><td><code>(params: RenameParams) =&gt; void</code></td><td>是</td><td>重命名或移动文件(同步)。目标已存在同名文件时覆盖。</td></tr>
115
+ <tr><td><code>rmdir</code></td><td><code>(params: RmdirParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>删除目录(异步)。recursive 为 false 时仅能删除空目录,为 true 时递归删除全部内容。</td></tr>
116
+ <tr><td><code>rmdirSync</code></td><td><code>(params: RmdirParams) =&gt; void</code></td><td>是</td><td>删除目录(同步)。recursive 为 false 时仅能删除空目录,为 true 时递归删除全部内容。</td></tr>
117
+ <tr><td><code>saveFile</code></td><td><code>(params: SaveFileParams) =&gt; Promise&lt;SaveFileResult&gt;</code></td><td>是</td><td>将临时文件保存到本地持久化存储(异步);返回 SaveFileResult,含实际保存路径。</td></tr>
118
+ <tr><td><code>saveFileSync</code></td><td><code>(params: SaveFileParams) =&gt; SaveFileResult</code></td><td>是</td><td>将临时文件保存到本地持久化存储(同步);返回 SaveFileResult,含实际保存路径。</td></tr>
119
+ <tr><td><code>stat</code></td><td><code>(params: StatParams) =&gt; Promise&lt;StatResult&gt;</code></td><td>是</td><td>获取文件或目录状态(异步);返回 StatResult,含字节大小、毫秒级修改时间和是否为目录。</td></tr>
120
+ <tr><td><code>statSync</code></td><td><code>(params: StatParams) =&gt; StatResult</code></td><td>是</td><td>获取文件或目录状态(同步);返回 StatResult,含字节大小、毫秒级修改时间和是否为目录。</td></tr>
121
+ <tr><td><code>truncate</code></td><td><code>(params: TruncateParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>截断文件到指定长度(异步)。短于原长度时截断,长于原长度时以 \0 填充。</td></tr>
122
+ <tr><td><code>truncateSync</code></td><td><code>(params: TruncateParams) =&gt; void</code></td><td>是</td><td>截断文件到指定长度(同步)。短于原长度时截断,长于原长度时以 \0 填充。</td></tr>
123
+ <tr><td><code>unlink</code></td><td><code>(params: UnlinkParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>删除文件(异步)。只能删除文件,删除目录请使用 rmdir。</td></tr>
124
+ <tr><td><code>unlinkSync</code></td><td><code>(params: UnlinkParams) =&gt; void</code></td><td>是</td><td>删除文件(同步)。只能删除文件,删除目录请使用 rmdir。</td></tr>
125
+ <tr><td><code>unzip</code></td><td><code>(params: UnzipParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>解压 zip 文件到指定目录(异步)。目标目录须已存在。</td></tr>
126
+ <tr><td><code>writeFile</code></td><td><code>(params: WriteFileParams) =&gt; Promise&lt;void&gt;</code></td><td>是</td><td>写入文件内容(异步)。文件和父目录不存在则创建,文件已存在则覆盖。</td></tr>
127
+ <tr><td><code>writeFileSync</code></td><td><code>(params: WriteFileParams) =&gt; void</code></td><td>是</td><td>写入文件内容(同步)。文件和父目录不存在则创建,文件已存在则覆盖。</td></tr>
128
+ </tbody>
129
+ </table>
130
+
131
+ ## 错误处理
132
+
133
+ 同步调用失败时抛出错误。错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
134
+
135
+ ### 失败示例
136
+
137
+ ```json
138
+ {
139
+ "errNo": 203,
140
+ "errMsg": "file does not exist"
141
+ }
142
+ ```
143
+
144
+ ### 错误码
145
+
146
+ <table>
147
+ <thead>
148
+ <tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
149
+ </thead>
150
+ <tbody>
151
+ <tr><td><code>203</code></td><td><code>file does not exist</code></td><td>Android、iOS</td><td>readFile、stat、getFileInfo、copyFile、rename、truncate、unlink、rmdir、removeSavedFile、unzip 等操作的目标文件或目录不存在</td><td>确认路径存在或先创建后重试。</td></tr>
152
+ <tr><td><code>213</code></td><td><code>invalid file path</code></td><td>Android、iOS</td><td>传入的路径不是合法的沙箱内 appletfile 路径,或试图越过沙箱根目录访问</td><td>使用应用沙箱内的合法本地路径后重试。</td></tr>
153
+ <tr><td><code>208</code></td><td><code>total size limit exceeded</code></td><td>Android、iOS</td><td>readFile、writeFile、appendFile、copyFile 时单次读写超过单文件大小上限,或写入后超出沙箱存储配额</td><td>减小单次读写数据量或清理已保存文件后重试。</td></tr>
154
+ <tr><td><code>1901001</code></td><td><code>target is a directory</code></td><td>Android、iOS</td><td>对目录执行了仅适用于文件的操作(如 readFile、writeFile、appendFile、copyFile、truncate、getFileInfo、unzip 的源文件),或 rmdir 删除非空目录时未开启 recursive</td><td>改为对文件操作,或删除目录时开启 recursive。</td></tr>
155
+ <tr><td><code>1901002</code></td><td><code>target is not a directory</code></td><td>Android、iOS</td><td>对文件执行了仅适用于目录的操作(如 readdir),或 mkdir 目标已存在同名文件、unzip 的 targetPath 不是目录</td><td>确认目标为目录后重试。</td></tr>
156
+ </tbody>
157
+ </table>
158
+
159
+ #### 通用错误码
160
+
161
+ <table>
162
+ <thead>
163
+ <tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
164
+ </thead>
165
+ <tbody>
166
+ <tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android、iOS</td></tr>
167
+ <tr><td><code>103</code></td><td><code>feature not support</code></td><td>当前环境不支持该能力</td><td>Android</td></tr>
168
+ <tr><td><code>104</code></td><td><code>invalid parameter</code></td><td>参数不合法</td><td>Android、iOS</td></tr>
169
+ </tbody>
170
+ </table>
171
+
172
+ ## 相关类型
173
+
174
+ <a id="readfileparams"></a>
175
+ ### ReadFileParams
176
+
177
+ FileSystemManager.readFile 的参数。
178
+
179
+ #### Properties
180
+
181
+ • **filePath**: `string` - 要读取的文件路径(本地路径)
182
+ • **encoding?**: `'utf-8' | 'base64'` - 指定读取文件的字符编码。 - 'utf-8':以 UTF-8 字符串形式返回文件内容。 - 'base64':以 Base64 编码字符串形式返回文件内容,适用于二进制文件。 省略时以 Base64 编码字符串返回文件内容
183
+
184
+ <a id="readfileresult"></a>
185
+ ### ReadFileResult
186
+
187
+ FileSystemManager.readFile 的返回结果。
188
+
189
+ #### Properties
190
+
191
+ • **data**: `string` - 文件内容。 具体格式由 ReadFileParams.encoding 决定: - 编码为 'utf-8' 时返回 UTF-8 字符串; - 编码为 'base64' 时返回 Base64 编码后的字符串
192
+
193
+ <a id="writefileparams"></a>
194
+ ### WriteFileParams
195
+
196
+ FileSystemManager.writeFile 的参数。
197
+
198
+ #### Properties
199
+
200
+ • **filePath**: `string` - 要写入的文件路径(本地路径)
201
+ • **data**: `string` - 要写入的内容。 - 当 encoding 为 'utf-8' 时,直接写入该字符串; - 当 encoding 为 'base64' 时,将该字符串先进行 Base64 解码再写入文件
202
+ • **encoding?**: `'utf-8' | 'base64'` - 指定写入文件的字符编码
203
+
204
+ <a id="appendfileparams"></a>
205
+ ### AppendFileParams
206
+
207
+ FileSystemManager.appendFile 的参数。
208
+
209
+ #### Properties
210
+
211
+ • **filePath**: `string` - 要追加内容的文件路径(本地路径)
212
+ • **data**: `string` - 要追加的内容。 - 当 encoding 为 'utf-8' 时,直接追加该字符串; - 当 encoding 为 'base64' 时,将该字符串先进行 Base64 解码再追加到文件末尾
213
+ • **encoding?**: `'utf-8' | 'base64'` - 指定写入文件的字符编码
214
+
215
+ <a id="accessparams"></a>
216
+ ### AccessParams
217
+
218
+ FileSystemManager.access 的参数。
219
+
220
+ #### Properties
221
+
222
+ • **path**: `string` - 要判断是否存在的文件或目录路径
223
+
224
+ <a id="mkdirparams"></a>
225
+ ### MkdirParams
226
+
227
+ FileSystemManager.mkdir 的参数。
228
+
229
+ #### Properties
230
+
231
+ • **dirPath**: `string` - 要创建的目录路径
232
+ • **recursive?**: `boolean` - 是否递归创建该目录的上级目录。 设为 true 时,即使中间路径不存在也会一并创建(类似 mkdir -p)
233
+
234
+ <a id="rmdirparams"></a>
235
+ ### RmdirParams
236
+
237
+ FileSystemManager.rmdir 的参数。
238
+
239
+ #### Properties
240
+
241
+ • **dirPath**: `string` - 要删除的目录路径
242
+ • **recursive?**: `boolean` - 是否递归删除目录下的所有子文件和子目录。 设为 false 时,仅当目录为空才能删除成功;设为 true 时会递归删除所有内容
243
+
244
+ <a id="readdirparams"></a>
245
+ ### ReaddirParams
246
+
247
+ FileSystemManager.readdir 的参数。
248
+
249
+ #### Properties
250
+
251
+ • **dirPath**: `string` - 要读取的目录路径
252
+
253
+ <a id="readdirresult"></a>
254
+ ### ReaddirResult
255
+
256
+ FileSystemManager.readdir 的返回结果。
257
+
258
+ #### Properties
259
+
260
+ • **files**: `string[]` - 目录下的文件和子目录名称列表(不含 . 和 ..)
261
+
262
+ <a id="unlinkparams"></a>
263
+ ### UnlinkParams
264
+
265
+ FileSystemManager.unlink 的参数。
266
+
267
+ #### Properties
268
+
269
+ • **filePath**: `string` - 要删除的文件路径。 该接口只能删除文件,不能删除目录;删除目录应使用 FileSystemManager.rmdir
270
+
271
+ <a id="statparams"></a>
272
+ ### StatParams
273
+
274
+ FileSystemManager.stat 的参数。
275
+
276
+ #### Properties
277
+
278
+ • **path**: `string` - 要获取状态信息的文件或目录路径
279
+
280
+ <a id="statresult"></a>
281
+ ### StatResult
282
+
283
+ FileSystemManager.stat 的返回结果。
284
+
285
+ #### Properties
286
+
287
+ • **size**: `number` - 文件大小,单位为字节(Byte)
288
+ • **lastModifiedTime**: `number` - 文件最近一次被修改的时间戳,单位为毫秒
289
+ • **isDirectory**: `boolean` - 判断当前路径是否是一个目录
290
+
291
+ <a id="copyfileparams"></a>
292
+ ### CopyFileParams
293
+
294
+ FileSystemManager.copyFile 的参数。
295
+
296
+ #### Properties
297
+
298
+ • **srcPath**: `string` - 源文件路径(被复制的文件)
299
+ • **destPath**: `string` - 目标文件路径(复制后生成的文件)
300
+
301
+ <a id="renameparams"></a>
302
+ ### RenameParams
303
+
304
+ FileSystemManager.rename 的参数。
305
+
306
+ #### Properties
307
+
308
+ • **oldPath**: `string` - 源文件路径(即当前文件路径)
309
+ • **newPath**: `string` - 新文件路径(即重命名或移动后的目标路径)
310
+
311
+ <a id="truncateparams"></a>
312
+ ### TruncateParams
313
+
314
+ FileSystemManager.truncate 的参数。
315
+
316
+ #### Properties
317
+
318
+ • **filePath**: `string` - 要截断的文件路径
319
+ • **length?**: `number` - 截断后的文件字节长度。 - 若 length 小于文件原始长度,文件将被截取到指定长度,多余部分丢弃。 - 若 length 大于文件原始长度,文件将被扩展到指定长度,扩展部分用 \0 填充
320
+
321
+ <a id="getfileinfoparams"></a>
322
+ ### GetFileInfoParams
323
+
324
+ FileSystemManager.getFileInfo 的参数。
325
+
326
+ #### Properties
327
+
328
+ • **filePath**: `string` - 要获取信息的文件路径
329
+ • **digestAlgorithm?**: `'md5' | 'sha1'` - 用于计算文件摘要的哈希算法。 - 'md5':使用 MD5 算法计算文件摘要。 - 'sha1':使用 SHA-1 算法计算文件摘要。 不传时不计算摘要,返回结果中 GetFileInfoResult.digest 为 undefined
330
+
331
+ <a id="getfileinforesult"></a>
332
+ ### GetFileInfoResult
333
+
334
+ FileSystemManager.getFileInfo 的返回结果。
335
+
336
+ #### Properties
337
+
338
+ • **size**: `number` - 文件大小,单位为字节(Byte)
339
+ • **digest?**: `string` - 按照 GetFileInfoParams.digestAlgorithm 计算得到的文件摘要(十六进制字符串)。 仅当请求时指定了 digestAlgorithm 才会返回
340
+
341
+ <a id="savefileparams"></a>
342
+ ### SaveFileParams
343
+
344
+ FileSystemManager.saveFile 的参数。
345
+
346
+ #### Properties
347
+
348
+ • **tempFilePath**: `string` - 临时文件路径(需先通过下载或其他方式获得的临时文件路径)
349
+ • **filePath?**: `string` - 保存到的目标文件路径。 不指定时会在用户目录(appletfile://user/)下自动生成一个带时间戳前缀的路径, 实际保存路径通过 SaveFileResult.savedFilePath 返回
350
+
351
+ <a id="savefileresult"></a>
352
+ ### SaveFileResult
353
+
354
+ FileSystemManager.saveFile 的返回结果。
355
+
356
+ #### Properties
357
+
358
+ • **savedFilePath**: `string` - 文件保存后的实际存储路径
359
+
360
+ <a id="getsavedfilelistresult"></a>
361
+ ### GetSavedFileListResult
362
+
363
+ FileSystemManager.getSavedFileList 的返回结果。
364
+
365
+ #### Properties
366
+
367
+ • **fileList**: `Array<{
368
+ /** 文件的本地路径。 */
369
+ filePath: string;
370
+ /** 文件大小,单位为字节(Byte)。 */
371
+ size: number;
372
+ /** 文件保存时的时间戳,单位为毫秒。 */
373
+ createTime: number;
374
+ }>` - 已保存的本地文件列表,每项包含文件路径、大小和创建时间
375
+
376
+ <a id="removesavedfileparams"></a>
377
+ ### RemoveSavedFileParams
378
+
379
+ FileSystemManager.removeSavedFile 的参数。
380
+
381
+ #### Properties
382
+
383
+ • **filePath**: `string` - 需要删除的已保存文件路径(应为 SaveFileResult.savedFilePath 返回的路径)
384
+
385
+ <a id="unzipparams"></a>
386
+ ### UnzipParams
387
+
388
+ FileSystemManager.unzip 的参数。
389
+
390
+ #### Properties
391
+
392
+ • **zipFilePath**: `string` - 要解压的 zip 文件路径
393
+ • **targetPath**: `string` - 解压后的目标目录路径。 目标目录须已存在,否则解压会失败
394
+
395
+ <a id="filesystemmanager"></a>
396
+ ### FileSystemManager
397
+
398
+ 文件系统管理器,提供对本地文件系统的完整读写能力。 通过 getFileSystemManager 获取实例后,可使用该接口上的方法执行文件和目录操作。 大多数方法同时提供异步(返回 Promise)和同步(Sync 后缀)两种调用方式。
399
+
400
+ #### Properties
401
+
402
+ • **readFile**: `(params: ReadFileParams) => Promise<ReadFileResult>` - 读取文件内容(异步);返回 ReadFileResult,其中 data 按 encoding 为 UTF-8 或 Base64 字符串
403
+ • **readFileSync**: `(params: ReadFileParams) => ReadFileResult` - 读取文件内容(同步);返回 ReadFileResult,其中 data 按 encoding 为 UTF-8 或 Base64 字符串
404
+ • **writeFile**: `(params: WriteFileParams) => Promise<void>` - 写入文件内容(异步)。文件和父目录不存在则创建,文件已存在则覆盖
405
+ • **writeFileSync**: `(params: WriteFileParams) => void` - 写入文件内容(同步)。文件和父目录不存在则创建,文件已存在则覆盖
406
+ • **appendFile**: `(params: AppendFileParams) => Promise<void>` - 在文件末尾追加内容(异步)。文件不存在则创建,不会覆盖已有内容
407
+ • **appendFileSync**: `(params: AppendFileParams) => void` - 在文件末尾追加内容(同步)。文件不存在则创建,不会覆盖已有内容
408
+ • **access**: `(params: AccessParams) => Promise<void>` - 判断文件或目录是否存在(异步)。存在时 Promise 兑现,不存在时 Promise 拒绝
409
+ • **accessSync**: `(params: AccessParams) => void` - 判断文件或目录是否存在(同步)。不存在时抛出异常
410
+ • **mkdir**: `(params: MkdirParams) => Promise<void>` - 创建目录(异步)。recursive 为 true 时一并创建缺失的上级目录
411
+ • **mkdirSync**: `(params: MkdirParams) => void` - 创建目录(同步)。recursive 为 true 时一并创建缺失的上级目录
412
+ • **rmdir**: `(params: RmdirParams) => Promise<void>` - 删除目录(异步)。recursive 为 false 时仅能删除空目录,为 true 时递归删除全部内容
413
+ • **rmdirSync**: `(params: RmdirParams) => void` - 删除目录(同步)。recursive 为 false 时仅能删除空目录,为 true 时递归删除全部内容
414
+ • **readdir**: `(params: ReaddirParams) => Promise<ReaddirResult>` - 读取目录内容(异步);返回 ReaddirResult,files 为目录下的文件与子目录名称(非完整路径,非递归)
415
+ • **readdirSync**: `(params: ReaddirParams) => ReaddirResult` - 读取目录内容(同步);返回 ReaddirResult,files 为目录下的文件与子目录名称(非完整路径,非递归)
416
+ • **unlink**: `(params: UnlinkParams) => Promise<void>` - 删除文件(异步)。只能删除文件,删除目录请使用 rmdir
417
+ • **unlinkSync**: `(params: UnlinkParams) => void` - 删除文件(同步)。只能删除文件,删除目录请使用 rmdir
418
+ • **stat**: `(params: StatParams) => Promise<StatResult>` - 获取文件或目录状态(异步);返回 StatResult,含字节大小、毫秒级修改时间和是否为目录
419
+ • **statSync**: `(params: StatParams) => StatResult` - 获取文件或目录状态(同步);返回 StatResult,含字节大小、毫秒级修改时间和是否为目录
420
+ • **copyFile**: `(params: CopyFileParams) => Promise<void>` - 复制文件(异步)。仅支持文件,目标已存在同名文件时覆盖
421
+ • **copyFileSync**: `(params: CopyFileParams) => void` - 复制文件(同步)。仅支持文件,目标已存在同名文件时覆盖
422
+ • **rename**: `(params: RenameParams) => Promise<void>` - 重命名或移动文件(异步)。目标已存在同名文件时覆盖
423
+ • **renameSync**: `(params: RenameParams) => void` - 重命名或移动文件(同步)。目标已存在同名文件时覆盖
424
+ • **truncate**: `(params: TruncateParams) => Promise<void>` - 截断文件到指定长度(异步)。短于原长度时截断,长于原长度时以 \0 填充
425
+ • **truncateSync**: `(params: TruncateParams) => void` - 截断文件到指定长度(同步)。短于原长度时截断,长于原长度时以 \0 填充
426
+ • **getFileInfo**: `(params: GetFileInfoParams) => Promise<GetFileInfoResult>` - 获取文件信息(异步);返回 GetFileInfoResult,含字节大小和可选的摘要
427
+ • **saveFile**: `(params: SaveFileParams) => Promise<SaveFileResult>` - 将临时文件保存到本地持久化存储(异步);返回 SaveFileResult,含实际保存路径
428
+ • **saveFileSync**: `(params: SaveFileParams) => SaveFileResult` - 将临时文件保存到本地持久化存储(同步);返回 SaveFileResult,含实际保存路径
429
+ • **getSavedFileList**: `() => Promise<GetSavedFileListResult>` - 获取已保存的本地文件列表(异步);返回 GetSavedFileListResult,每项含路径、字节大小和毫秒级保存时间
430
+ • **removeSavedFile**: `(params: RemoveSavedFileParams) => Promise<void>` - 删除通过 saveFile 保存的本地文件(异步)
431
+ • **unzip**: `(params: UnzipParams) => Promise<void>` - 解压 zip 文件到指定目录(异步)。目标目录须已存在
@@ -0,0 +1,69 @@
1
+ # 通用错误处理
2
+
3
+ ## 错误返回
4
+
5
+ JS API 调用失败时,异步 API 会 reject、同步 API 会 throw 一个错误对象,其结构如下:
6
+
7
+ ```json
8
+ {
9
+ "errNo": 1600004,
10
+ "errMsg": "key is empty"
11
+ }
12
+ ```
13
+
14
+ <table>
15
+ <thead>
16
+ <tr><th>字段</th><th>类型</th><th>说明</th></tr>
17
+ </thead>
18
+ <tbody>
19
+ <tr><td><code>errNo</code></td><td><code>number</code></td><td>错误码。建议优先使用该字段判断失败原因。</td></tr>
20
+ <tr><td><code>errMsg</code></td><td><code>string</code></td><td>错误信息,用于辅助排查问题,不建议依赖文案进行逻辑判断。</td></tr>
21
+ </tbody>
22
+ </table>
23
+
24
+ ## 通用错误码
25
+
26
+ 以下错误码由多个 JS API 共用。每个 API 实际可能返回的错误码以对应 API 页面的错误码表为准。
27
+
28
+ <table>
29
+ <thead>
30
+ <tr><th>errNo</th><th>errMsg</th><th>说明</th></tr>
31
+ </thead>
32
+ <tbody>
33
+ <tr><td><code>100</code></td><td><code>unknown error</code></td><td>未知错误</td></tr>
34
+ <tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td></tr>
35
+ <tr><td><code>103</code></td><td><code>feature not support</code></td><td>当前环境不支持该能力</td></tr>
36
+ <tr><td><code>104</code></td><td><code>invalid parameter</code></td><td>参数不合法</td></tr>
37
+ <tr><td><code>105</code></td><td><code>authentication fail</code></td><td>身份认证失败</td></tr>
38
+ <tr><td><code>106</code></td><td><code>system permission denied</code></td><td>系统权限未授予</td></tr>
39
+ <tr><td><code>107</code></td><td><code>user permission denied</code></td><td>用户未授权</td></tr>
40
+ <tr><td><code>110</code></td><td><code>API call prohibited</code></td><td>API 调用被禁止</td></tr>
41
+ <tr><td><code>112</code></td><td><code>invalid result</code></td><td>返回结果无效</td></tr>
42
+ <tr><td><code>113</code></td><td><code>bridge unavailable</code></td><td>JS API 暂不可用</td></tr>
43
+ <tr><td><code>114</code></td><td><code>operation cancelled</code></td><td>操作已取消</td></tr>
44
+ <tr><td><code>115</code></td><td><code>operation timeout</code></td><td>操作超时</td></tr>
45
+ <tr><td><code>116</code></td><td><code>resource not found</code></td><td>资源不存在</td></tr>
46
+ <tr><td><code>117</code></td><td><code>not implemented</code></td><td>能力尚未实现</td></tr>
47
+ <tr><td><code>118</code></td><td><code>already exists</code></td><td>资源已存在</td></tr>
48
+ <tr><td><code>120</code></td><td><code>too many requests</code></td><td>请求过于频繁</td></tr>
49
+ </tbody>
50
+ </table>
51
+
52
+ ## 处理示例
53
+
54
+ ```typescript
55
+ try {
56
+ await someJsApi();
57
+ } catch (error) {
58
+ const { errNo, errMsg } = error as { errNo?: number; errMsg?: string };
59
+
60
+ if (errNo === 115) {
61
+ console.warn('操作超时,请稍后重试');
62
+ return;
63
+ }
64
+
65
+ console.error(`调用失败:${errNo ?? 'unknown'} ${errMsg ?? ''}`);
66
+ }
67
+ ```
68
+
69
+ 请使用 `errNo` 进行程序判断,并为未识别的错误码提供兜底处理。`errMsg` 适合展示或排查问题,不应作为稳定的判断条件。
@@ -0,0 +1,43 @@
1
+ # 豆包应用插件的端能力 API 分组目录(Open API)
2
+
3
+ > 这里是豆包应用插件运行时 API 的分组目录,也称 Open API。先用 [速查索引](quick-reference.md) 找 API,再进入对应分组查看完整参数、返回值、示例和相关类型。
4
+
5
+ ## 分组
6
+
7
+ | 分组 | 说明 | API 数量 | 详细文档 |
8
+ | --- | --- | ---: | --- |
9
+ | 基础 | 账号、授权、豆包客户端信息、窗口信息和能力可用性。 | 10 | [查看](./01-基础.md) |
10
+ | 系统 | 豆包客户端信息、窗口信息和系统设置。 | 9 | [查看](./02-系统.md) |
11
+ | 自定义通信 | 在应用插件的页面或卡片实例之间发送和接收自定义事件。 | 1 | [查看](./03-自定义通信.md) |
12
+ | 定位 | 获取设备当前的地理位置信息。 | 5 | [查看](./04-定位.md) |
13
+ | 存储 | 本地缓存;带 Sync 后缀的是同步 API。 | 10 | [查看](./05-存储.md) |
14
+ | 路由 | 应用内页面跳转、返回、退出和关闭。 | 8 | [查看](./06-路由.md) |
15
+ | 界面 | 对话框状态、Toast、Loading、Modal、ActionSheet、BottomSheet、返回前提醒、键盘和输入框能力。 | 3 | [查看](./07-界面.md) |
16
+ | 交互 | Toast、Loading、Modal、ActionSheet、BottomSheet 和返回前提醒。 | 10 | [查看](./08-交互.md) |
17
+ | 输入 | 键盘和输入框选区能力。 | 2 | [查看](./09-输入.md) |
18
+ | 网络 | 网络请求与 WebSocket。 | 4 | [查看](./10-网络.md) |
19
+ | 媒体 | 图片选择、预览、保存、压缩和信息读取;录音管理;背景音频和内部音频播放。 | 8 | [查看](./11-媒体.md) |
20
+ | 业务能力 | 开放业务能力、卡片更新、模型上下文、任务和隐私设置。 | 7 | [查看](./12-业务能力.md) |
21
+ | 登录 | 豆包一次性登录凭证、Widget 登录交互和 MCP 授权结果回传能力。 | 3 | [查看](./13-登录.md) |
22
+ | 支付 | 订单创建、普通支付、平台免密支付、纯签约和支付并签约能力。 | 6 | [查看](./14-支付.md) |
23
+ | 数据分析 | 监控上报、事件和数据分析上报。 | 1 | [查看](./15-数据分析.md) |
24
+ | 蓝牙 | 蓝牙和 BLE 能力;通常先打开适配器,再扫描、连接和读写。 | 23 | [查看](./16-蓝牙.md) |
25
+ | Wi-Fi | Wi-Fi 模块能力;通常先 startWifi,再获取列表或连接。 | 7 | [查看](./17-wi-fi.md) |
26
+ | 加速度计 | 加速度计监听能力。 | 3 | [查看](./18-加速度计.md) |
27
+ | iBeacon | iBeacon 搜索和结果读取能力。 | 3 | [查看](./19-ibeacon.md) |
28
+ | 罗盘 | 罗盘监听能力。 | 3 | [查看](./20-罗盘.md) |
29
+ | 设备方向 | 设备方向监听能力。 | 3 | [查看](./21-设备方向.md) |
30
+ | 陀螺仪 | 陀螺仪监听能力。 | 3 | [查看](./22-陀螺仪.md) |
31
+ | 媒体 / 设备 / 网络 | 网络类型和本机局域网 IP。 | 2 | [查看](./23-媒体-设备-网络.md) |
32
+ | 短信 | 拉起系统短信发送面板。 | 1 | [查看](./24-短信.md) |
33
+ | 无障碍 | 检测无障碍能力开关状态。 | 1 | [查看](./25-无障碍.md) |
34
+ | 基础信息 | 设备品牌、型号、系统、内存和性能等级。 | 2 | [查看](./26-基础信息.md) |
35
+ | 电池 | 电池信息读取与变化监听。 | 2 | [查看](./27-电池.md) |
36
+ | 剪贴板 | 读取和设置系统剪贴板内容。 | 2 | [查看](./28-剪贴板.md) |
37
+ | 加密 | 安全随机数能力。 | 1 | [查看](./29-加密.md) |
38
+ | 日历 | 向系统日历添加事件和重复事件。 | 3 | [查看](./30-日历.md) |
39
+ | 电话 | 拨打电话。 | 1 | [查看](./31-电话.md) |
40
+ | 扫码 | 调起扫码并读取扫码结果。 | 1 | [查看](./32-扫码.md) |
41
+ | 屏幕 | 屏幕亮度、常亮和截屏/录屏相关能力。 | 7 | [查看](./33-屏幕.md) |
42
+ | 震动 | 触发短震动和长震动。 | 2 | [查看](./34-震动.md) |
43
+ | 文件系统 | 文件读写、目录管理和文件信息操作。 | 1 | [查看](./35-文件系统.md) |