@ccos/ccsdk-lite 1.0.0
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.
- package/README.md +92 -0
- package/dist/androidView/index.d.ts +71 -0
- package/dist/app/index.d.ts +50 -0
- package/dist/audio/index.d.ts +33 -0
- package/dist/bundle.js +1006 -0
- package/dist/core/bus.d.ts +20 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/file/index.d.ts +53 -0
- package/dist/index.d.ts +127 -0
- package/dist/network/index.d.ts +37 -0
- package/dist/storage/index.d.ts +11 -0
- package/dist/system/index.d.ts +20 -0
- package/package.json +29 -0
package/dist/bundle.js
ADDED
|
@@ -0,0 +1,1006 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简易实现的事件触发器
|
|
3
|
+
* 仅框架内部使用
|
|
4
|
+
* 未传入name时默认会有自增id作为name
|
|
5
|
+
* 主要为 定时器 bridge 等服务
|
|
6
|
+
*/
|
|
7
|
+
class Bus {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._busId = 0;
|
|
10
|
+
this._pool = {};
|
|
11
|
+
}
|
|
12
|
+
register(callback, name) {
|
|
13
|
+
let busName = name ? name.toString() : (++this._busId).toString();
|
|
14
|
+
if (!this._pool[busName])
|
|
15
|
+
this._pool[busName] = [];
|
|
16
|
+
this._pool[busName].push(callback);
|
|
17
|
+
return busName;
|
|
18
|
+
}
|
|
19
|
+
fire(name, ...args) {
|
|
20
|
+
if (!name)
|
|
21
|
+
return;
|
|
22
|
+
const callbacks = this._pool[name];
|
|
23
|
+
if (!callbacks || !callbacks.length)
|
|
24
|
+
return;
|
|
25
|
+
return callbacks.map((callback) => callback(...args));
|
|
26
|
+
}
|
|
27
|
+
has(name, callback) {
|
|
28
|
+
if (!name || !this._pool[name])
|
|
29
|
+
return false;
|
|
30
|
+
if (!callback)
|
|
31
|
+
return true;
|
|
32
|
+
const callbacks = this._pool[name];
|
|
33
|
+
const index = callbacks.indexOf(callback);
|
|
34
|
+
return index > -1;
|
|
35
|
+
}
|
|
36
|
+
remove(name, callback) {
|
|
37
|
+
if (!name || !this._pool[name])
|
|
38
|
+
return;
|
|
39
|
+
if (!callback) {
|
|
40
|
+
delete this._pool[name];
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const callbacks = this._pool[name];
|
|
44
|
+
const index = callbacks.indexOf(callback);
|
|
45
|
+
if (index > -1)
|
|
46
|
+
callbacks.splice(index, 1);
|
|
47
|
+
}
|
|
48
|
+
clear() {
|
|
49
|
+
this._busId = 0;
|
|
50
|
+
this._pool = {};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const bus = new Bus();
|
|
54
|
+
|
|
55
|
+
let actionList = []; // 这里保存, 未注册命令处理函数之前,APP发过来的命令
|
|
56
|
+
function defaultAppCmd(cmd, payload) {
|
|
57
|
+
console.log('default appCmd ' + cmd);
|
|
58
|
+
actionList.push({ cmd, payload }); // 有可能APP发过来的命令比较早,而页面的一些初始化还没有做完,这时把命令先存起来,放到 actionList 中
|
|
59
|
+
}
|
|
60
|
+
let appCmdProcessor = defaultAppCmd; // APP 发过来的命令,JS的执行函数
|
|
61
|
+
function onCommandFromApp(cmd, payload) {
|
|
62
|
+
appCmdProcessor(cmd, payload);
|
|
63
|
+
}
|
|
64
|
+
function setAppCommandCallback(cb) {
|
|
65
|
+
appCmdProcessor = cb;
|
|
66
|
+
//
|
|
67
|
+
const workList = actionList;
|
|
68
|
+
actionList = [];
|
|
69
|
+
// 如果 actionList 中有初始化之前来的命令,则执行这些命令
|
|
70
|
+
for (const action of workList) {
|
|
71
|
+
console.log('ahead cmd = ' + action.cmd);
|
|
72
|
+
cb(action.cmd, action.payload);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function unsetAppCommandCallback() {
|
|
76
|
+
appCmdProcessor = defaultAppCmd;
|
|
77
|
+
actionList = [];
|
|
78
|
+
}
|
|
79
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
80
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
81
|
+
let persistentCallbackId = []; // 持久化 callback-id 列表
|
|
82
|
+
function nativeCall(funcName, callbackId, params) {
|
|
83
|
+
if (window['_CooPark']) {
|
|
84
|
+
var object1 = {
|
|
85
|
+
func: funcName,
|
|
86
|
+
id: callbackId,
|
|
87
|
+
params: params || {}
|
|
88
|
+
};
|
|
89
|
+
window['_CooPark'].exec(JSON.stringify(object1));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function nativeRequest(funcName, params, persistent, persistentIdName, persistentCallback) {
|
|
93
|
+
if (!persistent) {
|
|
94
|
+
return new Promise((resolve) => {
|
|
95
|
+
let callbackId = bus.register((res) => {
|
|
96
|
+
resolve(res);
|
|
97
|
+
});
|
|
98
|
+
nativeCall(funcName, callbackId, params);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// 以下是持久化调用处理
|
|
102
|
+
let index = persistentCallbackId.indexOf(persistentIdName);
|
|
103
|
+
if (index < 0) {
|
|
104
|
+
persistentCallbackId.push(persistentIdName);
|
|
105
|
+
}
|
|
106
|
+
bus.remove(persistentIdName);
|
|
107
|
+
bus.register(persistentCallback, persistentIdName); // 这里注册一个持久化的回调,通常应用于 native 会持续回调的情况
|
|
108
|
+
return new Promise((resolve) => {
|
|
109
|
+
let callbackId = bus.register((res) => {
|
|
110
|
+
resolve(res);
|
|
111
|
+
});
|
|
112
|
+
nativeCall(funcName, callbackId, params);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//
|
|
116
|
+
function callNative(funcName, params) {
|
|
117
|
+
return nativeRequest(funcName, params, false);
|
|
118
|
+
}
|
|
119
|
+
// 带有持久性回调的调用
|
|
120
|
+
function callWithPersistentCallBack(funcName, params, persistentIdName, callback) {
|
|
121
|
+
return nativeRequest(funcName, params, true, persistentIdName, callback);
|
|
122
|
+
}
|
|
123
|
+
// 注销一个持久的回调函数
|
|
124
|
+
function deletePersistentCallBack(persistentIdName) {
|
|
125
|
+
bus.remove(persistentIdName);
|
|
126
|
+
let index = persistentCallbackId.indexOf(persistentIdName);
|
|
127
|
+
if (index < 0) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
persistentCallbackId.splice(index, 1); // 从persistentCallbackId中删除name
|
|
131
|
+
}
|
|
132
|
+
function callbackFromNative(callbackId, data) {
|
|
133
|
+
let payload = '';
|
|
134
|
+
if (typeof data == 'string') {
|
|
135
|
+
try {
|
|
136
|
+
payload = JSON.parse(data);
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
payload = data;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
payload = data;
|
|
144
|
+
}
|
|
145
|
+
bus.fire(callbackId, payload);
|
|
146
|
+
// 判断,如果不是持久的回调函数,则调用完毕之后删除该回调
|
|
147
|
+
let index = persistentCallbackId.indexOf(callbackId);
|
|
148
|
+
if (index < 0) {
|
|
149
|
+
bus.remove(callbackId);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const moduleName$6 = 'network';
|
|
154
|
+
function getFuncName$6(name) {
|
|
155
|
+
return moduleName$6 + '_' + name;
|
|
156
|
+
}
|
|
157
|
+
function paramToUrl(params) {
|
|
158
|
+
if (!params)
|
|
159
|
+
return '';
|
|
160
|
+
if (typeof params == 'object') {
|
|
161
|
+
let strArr = [];
|
|
162
|
+
let counter = 0;
|
|
163
|
+
let keys = Object.keys(params);
|
|
164
|
+
keys.sort();
|
|
165
|
+
for (const key of keys) {
|
|
166
|
+
const value = params[key];
|
|
167
|
+
if (counter != 0) {
|
|
168
|
+
strArr.push('&');
|
|
169
|
+
}
|
|
170
|
+
strArr.push(encodeURIComponent(key));
|
|
171
|
+
strArr.push('=');
|
|
172
|
+
if (typeof value == 'object') {
|
|
173
|
+
strArr.push(encodeURIComponent(JSON.stringify(value)));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
strArr.push(encodeURIComponent(value.toString()));
|
|
177
|
+
}
|
|
178
|
+
counter++;
|
|
179
|
+
}
|
|
180
|
+
return strArr.join('');
|
|
181
|
+
}
|
|
182
|
+
return params.toString();
|
|
183
|
+
}
|
|
184
|
+
// 简单的 HTTP 请求
|
|
185
|
+
function simpleHttpRequest(params) {
|
|
186
|
+
return callNative(getFuncName$6('simpleHttpRequest'), params);
|
|
187
|
+
}
|
|
188
|
+
function httpGet(url, urlParam, header, base64) {
|
|
189
|
+
const paramString = paramToUrl(urlParam);
|
|
190
|
+
let newUrl;
|
|
191
|
+
if (paramString) {
|
|
192
|
+
if (url.indexOf('?') >= 0) {
|
|
193
|
+
newUrl = url + '&' + paramString;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
newUrl = url + '?' + paramString;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
newUrl = url;
|
|
201
|
+
}
|
|
202
|
+
//
|
|
203
|
+
let obj = {
|
|
204
|
+
url: newUrl,
|
|
205
|
+
method: 'GET'
|
|
206
|
+
};
|
|
207
|
+
if (header) {
|
|
208
|
+
obj.header = JSON.stringify(header);
|
|
209
|
+
}
|
|
210
|
+
if (base64) {
|
|
211
|
+
obj.base64Flag = true;
|
|
212
|
+
}
|
|
213
|
+
return simpleHttpRequest(obj);
|
|
214
|
+
}
|
|
215
|
+
function httpPost(url, body, header, postJson, base64, postType) {
|
|
216
|
+
let obj = {
|
|
217
|
+
url: url,
|
|
218
|
+
method: 'POST'
|
|
219
|
+
};
|
|
220
|
+
// POST 的内容
|
|
221
|
+
if (body) {
|
|
222
|
+
if (typeof body == 'object') {
|
|
223
|
+
if (postJson) {
|
|
224
|
+
obj.body = JSON.stringify(body);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
obj.body = paramToUrl(body);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
obj.body = body.toString();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//
|
|
235
|
+
if (header) {
|
|
236
|
+
obj.header = JSON.stringify(header);
|
|
237
|
+
}
|
|
238
|
+
//
|
|
239
|
+
if (base64) {
|
|
240
|
+
obj.base64Flag = true;
|
|
241
|
+
}
|
|
242
|
+
//
|
|
243
|
+
if (postJson) {
|
|
244
|
+
obj.postType = 'application/json';
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
if (postType) {
|
|
248
|
+
obj.postType = postType;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
obj.postType = 'application/x-www-form-urlencoded';
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return simpleHttpRequest(obj);
|
|
255
|
+
}
|
|
256
|
+
function httpSseGet(url, urlParam, header, base64) {
|
|
257
|
+
const paramString = paramToUrl(urlParam);
|
|
258
|
+
let newUrl;
|
|
259
|
+
if (paramString) {
|
|
260
|
+
if (url.indexOf('?') >= 0) {
|
|
261
|
+
newUrl = url + '&' + paramString;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
newUrl = url + '?' + paramString;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
newUrl = url;
|
|
269
|
+
}
|
|
270
|
+
//
|
|
271
|
+
let obj = {
|
|
272
|
+
url: newUrl,
|
|
273
|
+
method: 'GET'
|
|
274
|
+
};
|
|
275
|
+
if (header) {
|
|
276
|
+
obj.header = JSON.stringify(header);
|
|
277
|
+
}
|
|
278
|
+
if (base64) {
|
|
279
|
+
obj.base64Flag = true;
|
|
280
|
+
}
|
|
281
|
+
return readSse(obj);
|
|
282
|
+
}
|
|
283
|
+
// 获取网络的基本信息
|
|
284
|
+
function getNetworkInfo() {
|
|
285
|
+
return callNative(getFuncName$6('getNetworkInfo'), null);
|
|
286
|
+
}
|
|
287
|
+
// 获取合规化后的域名
|
|
288
|
+
function getDomainName(domain) {
|
|
289
|
+
return callNative(getFuncName$6('getDomainName'), { domain });
|
|
290
|
+
}
|
|
291
|
+
// 获取基本 Header 信息
|
|
292
|
+
function getCommonHeader() {
|
|
293
|
+
return callNative(getFuncName$6('getCommonHeader'), null);
|
|
294
|
+
}
|
|
295
|
+
// 读取SSE流
|
|
296
|
+
function readSse(params) {
|
|
297
|
+
return callNative(getFuncName$6('readSse'), params);
|
|
298
|
+
}
|
|
299
|
+
// 下载一个文件到设备本地
|
|
300
|
+
// url : 需要下载的链接
|
|
301
|
+
// tempFlag: 是否存放到临时目录中
|
|
302
|
+
// method: 请求方法,可以为 GET 或 POST
|
|
303
|
+
// header: JSON格式的字符串,指明该请求需要提交的Header
|
|
304
|
+
// postType: 如果为 POST 请求,指明 POST 数据的格式
|
|
305
|
+
// body: 如果为 POST 请求,这里放入 POST 的内容
|
|
306
|
+
// 返回:
|
|
307
|
+
// 返回下载到的文件名路径
|
|
308
|
+
function downloadToFile(url, tempFlag = true, method = 'GET', header = '', postType = '', body = '') {
|
|
309
|
+
return callNative(getFuncName$6('downloadToFile'), {
|
|
310
|
+
url,
|
|
311
|
+
tempFlag,
|
|
312
|
+
method,
|
|
313
|
+
header,
|
|
314
|
+
postType,
|
|
315
|
+
body
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
var network = {
|
|
319
|
+
simpleHttpRequest,
|
|
320
|
+
httpGet,
|
|
321
|
+
httpPost,
|
|
322
|
+
httpSseGet,
|
|
323
|
+
getNetworkInfo,
|
|
324
|
+
getDomainName,
|
|
325
|
+
getCommonHeader,
|
|
326
|
+
downloadToFile
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
const moduleName$5 = 'app';
|
|
330
|
+
const localBroadcastHookCallbackId = 'localBroadcastHookCallbackId';
|
|
331
|
+
const globalBroadcastHookCallbackId = 'globalBroadcastHookCallbackId';
|
|
332
|
+
const localBroadcastActionMap = new Map();
|
|
333
|
+
const globalBroadcastActionMap = new Map();
|
|
334
|
+
function getFuncName$5(name) {
|
|
335
|
+
return moduleName$5 + '_' + name;
|
|
336
|
+
}
|
|
337
|
+
function startActivity(params) {
|
|
338
|
+
return callNative(getFuncName$5('startActivity'), params);
|
|
339
|
+
}
|
|
340
|
+
function startService(params) {
|
|
341
|
+
return callNative(getFuncName$5('startService'), params);
|
|
342
|
+
}
|
|
343
|
+
function sendBroadcast(params) {
|
|
344
|
+
return callNative(getFuncName$5('sendBroadcast'), params);
|
|
345
|
+
}
|
|
346
|
+
function sendLocalBroadcast(params) {
|
|
347
|
+
return callNative(getFuncName$5('sendLocalBroadcast'), params);
|
|
348
|
+
}
|
|
349
|
+
function startBackEndAction(action) {
|
|
350
|
+
return callNative(getFuncName$5('startBackEndAction'), action);
|
|
351
|
+
}
|
|
352
|
+
function exitPage() {
|
|
353
|
+
callNative(getFuncName$5('exitPage'), null);
|
|
354
|
+
}
|
|
355
|
+
function moveTaskToBack() {
|
|
356
|
+
return callNative(getFuncName$5('moveTaskToBack'), null);
|
|
357
|
+
}
|
|
358
|
+
function getUserInfo() {
|
|
359
|
+
return callNative(getFuncName$5('getUserInfo'), null);
|
|
360
|
+
}
|
|
361
|
+
function setUserLogout() {
|
|
362
|
+
return callNative(getFuncName$5('setUserLogout'), null);
|
|
363
|
+
}
|
|
364
|
+
function getAppList() {
|
|
365
|
+
return callNative(getFuncName$5('getAppList'), null);
|
|
366
|
+
}
|
|
367
|
+
function getAppInfo(params) {
|
|
368
|
+
return callNative(getFuncName$5('getAppInfo'), params);
|
|
369
|
+
}
|
|
370
|
+
function processLocalBroadcast(payload) {
|
|
371
|
+
if (payload.hasOwnProperty('action')) {
|
|
372
|
+
const action = payload['action'];
|
|
373
|
+
if (localBroadcastActionMap.has(action)) {
|
|
374
|
+
const func = localBroadcastActionMap.get(action);
|
|
375
|
+
if (func) {
|
|
376
|
+
func(payload);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
function processGlobalBroadcast(payload) {
|
|
382
|
+
if (payload.hasOwnProperty('action')) {
|
|
383
|
+
const action = payload['action'];
|
|
384
|
+
if (globalBroadcastActionMap.has(action)) {
|
|
385
|
+
const func = globalBroadcastActionMap.get(action);
|
|
386
|
+
if (func) {
|
|
387
|
+
func(payload);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
function addLocalBroadcastHook(action, callback) {
|
|
393
|
+
localBroadcastActionMap.set(action, callback); // action 如存在会更新
|
|
394
|
+
//
|
|
395
|
+
return callWithPersistentCallBack(getFuncName$5('addLocalBroadcastHook'), { callbackId: localBroadcastHookCallbackId, action }, localBroadcastHookCallbackId, processLocalBroadcast);
|
|
396
|
+
}
|
|
397
|
+
function deleteLocalBroadcastHook(action) {
|
|
398
|
+
localBroadcastActionMap.delete(action);
|
|
399
|
+
return callNative(getFuncName$5('deleteLocalBroadcastHook'), { action });
|
|
400
|
+
}
|
|
401
|
+
function addBroadcastHook(action, callback) {
|
|
402
|
+
globalBroadcastActionMap.set(action, callback); // action 如存在会更新
|
|
403
|
+
//
|
|
404
|
+
return callWithPersistentCallBack(getFuncName$5('addBroadcastHook'), { callbackId: globalBroadcastHookCallbackId, action }, globalBroadcastHookCallbackId, processGlobalBroadcast);
|
|
405
|
+
}
|
|
406
|
+
function deleteBroadcastHook(action) {
|
|
407
|
+
globalBroadcastActionMap.delete(action);
|
|
408
|
+
return callNative(getFuncName$5('deleteBroadcastHook'), { action });
|
|
409
|
+
}
|
|
410
|
+
function playAudio(source, loop = false, fromAssets = false) {
|
|
411
|
+
return callNative(getFuncName$5('playAudio'), { source, loop, fromAssets });
|
|
412
|
+
}
|
|
413
|
+
function stopAudio() {
|
|
414
|
+
return callNative(getFuncName$5('stopAudio'), null);
|
|
415
|
+
}
|
|
416
|
+
function appPrivateMethod(method, params) {
|
|
417
|
+
let str = '';
|
|
418
|
+
if (params) {
|
|
419
|
+
if (typeof params == 'object') {
|
|
420
|
+
str = JSON.stringify(params);
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
str = String(params);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return callNative(getFuncName$5('appPrivateMethod'), { method, params: str });
|
|
427
|
+
}
|
|
428
|
+
var app = {
|
|
429
|
+
startActivity,
|
|
430
|
+
startService,
|
|
431
|
+
sendBroadcast,
|
|
432
|
+
sendLocalBroadcast,
|
|
433
|
+
startBackEndAction,
|
|
434
|
+
exitPage,
|
|
435
|
+
moveTaskToBack,
|
|
436
|
+
getUserInfo,
|
|
437
|
+
setUserLogout,
|
|
438
|
+
getAppList,
|
|
439
|
+
getAppInfo,
|
|
440
|
+
addLocalBroadcastHook,
|
|
441
|
+
deleteLocalBroadcastHook,
|
|
442
|
+
addBroadcastHook,
|
|
443
|
+
deleteBroadcastHook,
|
|
444
|
+
playAudio,
|
|
445
|
+
stopAudio,
|
|
446
|
+
appPrivateMethod
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
const moduleName$4 = 'system';
|
|
450
|
+
const lifeCycleHookCallbackId = 'lifeCycleHookCallback';
|
|
451
|
+
function getFuncName$4(name) {
|
|
452
|
+
return moduleName$4 + '_' + name;
|
|
453
|
+
}
|
|
454
|
+
// 获取SDK的版本信息
|
|
455
|
+
function getSdkVersion() {
|
|
456
|
+
return callNative(getFuncName$4('getSdkVersion'), null);
|
|
457
|
+
}
|
|
458
|
+
// 添加 Activity 的生命周期的回调钩子
|
|
459
|
+
function addLifeCycleHook(callback) {
|
|
460
|
+
return callWithPersistentCallBack(getFuncName$4('addLifeCycleHook'), { callbackId: lifeCycleHookCallbackId }, lifeCycleHookCallbackId, callback);
|
|
461
|
+
}
|
|
462
|
+
// 删除生命周期的回调钩子
|
|
463
|
+
function deleteLifeCycleHook() {
|
|
464
|
+
deletePersistentCallBack(lifeCycleHookCallbackId);
|
|
465
|
+
return callNative(getFuncName$4('deleteLifeCycleHook'), null);
|
|
466
|
+
}
|
|
467
|
+
// 声明本页面接收并处理系统级的按键(如:返回、HOME、MENU 键)
|
|
468
|
+
function enableSystemKey(params) {
|
|
469
|
+
return callNative(getFuncName$4('enableSystemKey'), params);
|
|
470
|
+
}
|
|
471
|
+
// 获取设备信息
|
|
472
|
+
function getDeviceInfo() {
|
|
473
|
+
return callNative(getFuncName$4('getDeviceInfo'), null);
|
|
474
|
+
}
|
|
475
|
+
// 获取 android property 的值
|
|
476
|
+
function getProperty(key) {
|
|
477
|
+
return callNative(getFuncName$4('getProperty'), { key });
|
|
478
|
+
}
|
|
479
|
+
// 获取当前设备所处的位置信息
|
|
480
|
+
function getLocation() {
|
|
481
|
+
return callNative(getFuncName$4('getLocation'), null);
|
|
482
|
+
}
|
|
483
|
+
var system = {
|
|
484
|
+
getSdkVersion,
|
|
485
|
+
addLifeCycleHook,
|
|
486
|
+
deleteLifeCycleHook,
|
|
487
|
+
enableSystemKey,
|
|
488
|
+
getDeviceInfo,
|
|
489
|
+
getProperty,
|
|
490
|
+
getLocation
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
const moduleName$3 = 'storage';
|
|
494
|
+
function getFuncName$3(name) {
|
|
495
|
+
return moduleName$3 + '_' + name;
|
|
496
|
+
}
|
|
497
|
+
function setKey(key, value) {
|
|
498
|
+
return callNative(getFuncName$3('setKey'), { key, value });
|
|
499
|
+
}
|
|
500
|
+
function getKey(key) {
|
|
501
|
+
return callNative(getFuncName$3('getKey'), { key });
|
|
502
|
+
}
|
|
503
|
+
function deleteKey(key) {
|
|
504
|
+
return callNative(getFuncName$3('deleteKey'), { key });
|
|
505
|
+
}
|
|
506
|
+
function clearAllKeys() {
|
|
507
|
+
return callNative(getFuncName$3('clearAllKeys'), null);
|
|
508
|
+
}
|
|
509
|
+
var storage = {
|
|
510
|
+
setKey,
|
|
511
|
+
getKey,
|
|
512
|
+
deleteKey,
|
|
513
|
+
clearAllKeys
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
const moduleName$2 = 'androidView';
|
|
517
|
+
function getFuncName$2(name) {
|
|
518
|
+
return moduleName$2 + '_' + name;
|
|
519
|
+
}
|
|
520
|
+
const playerListenerCallbackId = 'playerListenerCallbackId';
|
|
521
|
+
// 播放PAG动画
|
|
522
|
+
// repeat: 循环次数 -1 表示无限
|
|
523
|
+
//
|
|
524
|
+
function startPagAni(params) {
|
|
525
|
+
return callNative(getFuncName$2('startPagAni'), params);
|
|
526
|
+
}
|
|
527
|
+
// 停止PAG动画,并消失
|
|
528
|
+
function stopPagAni() {
|
|
529
|
+
return callNative(getFuncName$2('stopPagAni'), null);
|
|
530
|
+
}
|
|
531
|
+
// 播报 TTS 文本语音
|
|
532
|
+
function sendTts(text, ttsId) {
|
|
533
|
+
return callNative(getFuncName$2('sendTts'), { text, id: ttsId });
|
|
534
|
+
}
|
|
535
|
+
// 停止播报 TTS
|
|
536
|
+
function stopTts() {
|
|
537
|
+
return callNative(getFuncName$2('stopTts'), null);
|
|
538
|
+
}
|
|
539
|
+
// 流式播报 TTS
|
|
540
|
+
function sendStreamTts(text, ttsId, isFirst, isEnd) {
|
|
541
|
+
return callNative(getFuncName$2('sendStreamTts'), { text, id: ttsId, isFirst, isEnd });
|
|
542
|
+
}
|
|
543
|
+
// 播放器,播放新的URL
|
|
544
|
+
function playerPlayNewUrl(url) {
|
|
545
|
+
return callNative(getFuncName$2('playerPlayNewUrl'), { url });
|
|
546
|
+
}
|
|
547
|
+
// 播放器,停止播放
|
|
548
|
+
function playerStop() {
|
|
549
|
+
return callNative(getFuncName$2('playerStop'), null);
|
|
550
|
+
}
|
|
551
|
+
// 播放器,暂停播放
|
|
552
|
+
function playerPause() {
|
|
553
|
+
return callNative(getFuncName$2('playerPause'), null);
|
|
554
|
+
}
|
|
555
|
+
// 播放器,启动播放或者从暂停恢复播放
|
|
556
|
+
function playerStart() {
|
|
557
|
+
return callNative(getFuncName$2('playerStart'), null);
|
|
558
|
+
}
|
|
559
|
+
// 播放器,seek
|
|
560
|
+
function playerSeekTo(position) {
|
|
561
|
+
return callNative(getFuncName$2('playerSeekTo'), { position: Math.floor(position) });
|
|
562
|
+
}
|
|
563
|
+
// 播放器,是否准备好
|
|
564
|
+
function playerHasPrepared() {
|
|
565
|
+
return callNative(getFuncName$2('playerHasPrepared'), null);
|
|
566
|
+
}
|
|
567
|
+
// 播放器,是否正在播放中
|
|
568
|
+
function playerIsPlaying() {
|
|
569
|
+
return callNative(getFuncName$2('playerIsPlaying'), null);
|
|
570
|
+
}
|
|
571
|
+
// 播放器,获取总时长
|
|
572
|
+
function playerGetDuration() {
|
|
573
|
+
return callNative(getFuncName$2('playerGetDuration'), null);
|
|
574
|
+
}
|
|
575
|
+
// 播放器,获取当前进度值
|
|
576
|
+
function playerGetCurrentPosition() {
|
|
577
|
+
return callNative(getFuncName$2('playerGetCurrentPosition'), null);
|
|
578
|
+
}
|
|
579
|
+
// 播放器,获取播放状态,返回的value为字符串来标识播放状态
|
|
580
|
+
// 例如:Idle, Initialized, Preparing, Prepared, Started, Paused, Stopped, Completed, Error, End
|
|
581
|
+
function playerGetPlayerState() {
|
|
582
|
+
return callNative(getFuncName$2('playerGetPlayerState'), null);
|
|
583
|
+
}
|
|
584
|
+
// 播放器,播放新的本地文件路径
|
|
585
|
+
function playerPlayNewFile(path) {
|
|
586
|
+
return callNative(getFuncName$2('playerPlayNewFile'), { path });
|
|
587
|
+
}
|
|
588
|
+
// 播放器,设置单片循环模式
|
|
589
|
+
// isLooping: 是否循环播放
|
|
590
|
+
// silentLoop - 静默循环,默认关闭, 开启之后,部分依靠onCompletion重新播放来实现循环播放的方案下:
|
|
591
|
+
// 会无感知重播,即重播时,不会调idle/ preparing/ prepared等开始播放之前的状态)
|
|
592
|
+
function playerSetLooping(isLooping, silentLoop = false) {
|
|
593
|
+
return callNative(getFuncName$2('playerSetLooping'), { isLooping, silentLoop });
|
|
594
|
+
}
|
|
595
|
+
// 播放器,设置自动屏保锁,即:开始或恢复播放->锁屏保,停止或暂停播放->释放屏保锁 默认关闭
|
|
596
|
+
function playerSetAutoWakeLock(autoWakeLock) {
|
|
597
|
+
return callNative(getFuncName$2('playerSetAutoWakeLock'), { autoWakeLock });
|
|
598
|
+
}
|
|
599
|
+
// 播放器,重新播放
|
|
600
|
+
function playerRePlay() {
|
|
601
|
+
return callNative(getFuncName$2('playerRePlay'), null);
|
|
602
|
+
}
|
|
603
|
+
// 播放器,设置是否自动播放,即 play ready 后音视频自动播放 默认开启
|
|
604
|
+
function playerSetPlayWhenReady(playWhenReady = true) {
|
|
605
|
+
return callNative(getFuncName$2('playerSetPlayWhenReady'), { playWhenReady });
|
|
606
|
+
}
|
|
607
|
+
// 获取当前设置的播放内核, 有可能会返回 DefaultPlayer
|
|
608
|
+
// 值: DefaultPlayer, MediaPlayer, SocPlayer, ExoPlayer
|
|
609
|
+
function playerGetPlayerCore() {
|
|
610
|
+
return callNative(getFuncName$2('playerGetPlayerCore'), null);
|
|
611
|
+
}
|
|
612
|
+
// 获取实际的播放内核, 部分内核如:最佳内核,实际上是在各个内核中进行选择,不会返回 DefaultPlayer
|
|
613
|
+
// 值: MediaPlayer, SocPlayer, ExoPlayer
|
|
614
|
+
function playerGetRealPlayerCore() {
|
|
615
|
+
return callNative(getFuncName$2('playerGetRealPlayerCore'), null);
|
|
616
|
+
}
|
|
617
|
+
// 设置视频播放器的事件回调
|
|
618
|
+
// 注意: 使用此回调的话,不用时记得使用 playerDeleteListener 注销事件回调
|
|
619
|
+
function playerSetListener(callback) {
|
|
620
|
+
return callWithPersistentCallBack(getFuncName$2('playerSetListener'), { callbackId: playerListenerCallbackId }, playerListenerCallbackId, callback);
|
|
621
|
+
}
|
|
622
|
+
// 注销视频播放器的事件回调
|
|
623
|
+
function playerDeleteListener() {
|
|
624
|
+
deletePersistentCallBack(playerListenerCallbackId);
|
|
625
|
+
return callNative(getFuncName$2('playerDeleteListener'), null);
|
|
626
|
+
}
|
|
627
|
+
// 设置视频播放窗口的位置与宽高
|
|
628
|
+
function setVideoLayout(width, height, x, y) {
|
|
629
|
+
return callNative(getFuncName$2('setVideoLayout'), { x: Number(x), y: Number(y), w: Number(width), h: Number(height) });
|
|
630
|
+
}
|
|
631
|
+
// 设置视频窗口是否显示
|
|
632
|
+
function setVideoVisible(show) {
|
|
633
|
+
return callNative(getFuncName$2('setVideoVisible'), { visible: show });
|
|
634
|
+
}
|
|
635
|
+
// 设置背景
|
|
636
|
+
// needUpdateColor : 是否更新颜色
|
|
637
|
+
// color : 颜色值,例如 0xFFFF0000表示红色,格式为 ARGB
|
|
638
|
+
// needUpdateImage : 是否更新背景图
|
|
639
|
+
// imageUrl: 背景图的URL
|
|
640
|
+
function setBackground(needUpdateColor, color, needUpdateImage, imageUrl) {
|
|
641
|
+
return callNative(getFuncName$2('setBackground'), { updateColorFlag: needUpdateColor, updateImageFlag: needUpdateImage, color: Math.floor(color), imageUrl });
|
|
642
|
+
}
|
|
643
|
+
// 清除背景
|
|
644
|
+
function clearBackground() {
|
|
645
|
+
return callNative(getFuncName$2('clearBackground'), null);
|
|
646
|
+
}
|
|
647
|
+
// 显示语音文本提示条, tips文本中如果带 # 字符,会把 # 字符显示成麦克风图标
|
|
648
|
+
function showVoiceTipsBar(tips = '') {
|
|
649
|
+
return callNative(getFuncName$2('showVoiceTipsBar'), { tips });
|
|
650
|
+
}
|
|
651
|
+
// 隐藏语音文本提示条
|
|
652
|
+
function hideVoiceTipsBar() {
|
|
653
|
+
return callNative(getFuncName$2('hideVoiceTipsBar'), null);
|
|
654
|
+
}
|
|
655
|
+
var androidView = {
|
|
656
|
+
startPagAni,
|
|
657
|
+
stopPagAni,
|
|
658
|
+
sendTts,
|
|
659
|
+
stopTts,
|
|
660
|
+
sendStreamTts,
|
|
661
|
+
playerPlayNewUrl,
|
|
662
|
+
playerStop,
|
|
663
|
+
playerPause,
|
|
664
|
+
playerStart,
|
|
665
|
+
playerSeekTo,
|
|
666
|
+
playerHasPrepared,
|
|
667
|
+
playerIsPlaying,
|
|
668
|
+
playerGetDuration,
|
|
669
|
+
playerGetCurrentPosition,
|
|
670
|
+
playerGetPlayerState,
|
|
671
|
+
playerPlayNewFile,
|
|
672
|
+
playerSetLooping,
|
|
673
|
+
playerSetAutoWakeLock,
|
|
674
|
+
playerRePlay,
|
|
675
|
+
playerSetPlayWhenReady,
|
|
676
|
+
playerGetPlayerCore,
|
|
677
|
+
playerGetRealPlayerCore,
|
|
678
|
+
playerSetListener,
|
|
679
|
+
playerDeleteListener,
|
|
680
|
+
setVideoLayout,
|
|
681
|
+
setVideoVisible,
|
|
682
|
+
setBackground,
|
|
683
|
+
clearBackground,
|
|
684
|
+
showVoiceTipsBar,
|
|
685
|
+
hideVoiceTipsBar,
|
|
686
|
+
};
|
|
687
|
+
|
|
688
|
+
const moduleName$1 = 'audio';
|
|
689
|
+
function getFuncName$1(name) {
|
|
690
|
+
return moduleName$1 + '_' + name;
|
|
691
|
+
}
|
|
692
|
+
const audioPlayerListenerCallbackId = 'audioPlayerListenerCallbackId';
|
|
693
|
+
// 播放器,播放新的URL或者本地文件系统的路径
|
|
694
|
+
function playNew(path) {
|
|
695
|
+
return callNative(getFuncName$1('playNew'), { path });
|
|
696
|
+
}
|
|
697
|
+
// 播放器,停止播放
|
|
698
|
+
function stop() {
|
|
699
|
+
return callNative(getFuncName$1('stop'), null);
|
|
700
|
+
}
|
|
701
|
+
// 播放器,是否正在播放中
|
|
702
|
+
function isPlaying() {
|
|
703
|
+
return callNative(getFuncName$1('isPlaying'), null);
|
|
704
|
+
}
|
|
705
|
+
// 播放器,是否准备好
|
|
706
|
+
function hasPrepared() {
|
|
707
|
+
return callNative(getFuncName$1('hasPrepared'), null);
|
|
708
|
+
}
|
|
709
|
+
// 播放器,获取总时长
|
|
710
|
+
function getDuration() {
|
|
711
|
+
return callNative(getFuncName$1('getDuration'), null);
|
|
712
|
+
}
|
|
713
|
+
// 播放器,获取当前进度值
|
|
714
|
+
function getCurrentPosition() {
|
|
715
|
+
return callNative(getFuncName$1('getCurrentPosition'), null);
|
|
716
|
+
}
|
|
717
|
+
// 播放器,获取播放状态,返回的value为字符串来标识播放状态
|
|
718
|
+
// 例如:Idle, Initialized, Preparing, Prepared, Started, Paused, Stopped, Completed, Error, End
|
|
719
|
+
function getPlayerState() {
|
|
720
|
+
return callNative(getFuncName$1('getPlayerState'), null);
|
|
721
|
+
}
|
|
722
|
+
// 播放器,暂停播放
|
|
723
|
+
function pause() {
|
|
724
|
+
return callNative(getFuncName$1('pause'), null);
|
|
725
|
+
}
|
|
726
|
+
// 播放器,启动播放或者从暂停恢复播放
|
|
727
|
+
function start() {
|
|
728
|
+
return callNative(getFuncName$1('start'), null);
|
|
729
|
+
}
|
|
730
|
+
// 播放器,重新播放
|
|
731
|
+
function rePlay() {
|
|
732
|
+
return callNative(getFuncName$1('rePlay'), null);
|
|
733
|
+
}
|
|
734
|
+
// 播放器,seek
|
|
735
|
+
function seekTo(position) {
|
|
736
|
+
return callNative(getFuncName$1('seekTo'), { position: Math.floor(position) });
|
|
737
|
+
}
|
|
738
|
+
// 播放器,设置单片循环模式
|
|
739
|
+
// isLooping: 是否循环播放
|
|
740
|
+
// silentLoop - 静默循环,默认关闭, 开启之后,部分依靠onCompletion重新播放来实现循环播放的方案下:
|
|
741
|
+
// 会无感知重播,即重播时,不会调idle/ preparing/ prepared等开始播放之前的状态)
|
|
742
|
+
function setLooping(isLooping, silentLoop = false) {
|
|
743
|
+
return callNative(getFuncName$1('setLooping'), { isLooping, silentLoop });
|
|
744
|
+
}
|
|
745
|
+
// 设置音量
|
|
746
|
+
function setVolume(volume) {
|
|
747
|
+
return callNative(getFuncName$1('setVolume'), { volume });
|
|
748
|
+
}
|
|
749
|
+
// 设置视频播放器的事件回调
|
|
750
|
+
// 注意: 使用此回调的话,不用时记得使用 deleteListener 注销事件回调
|
|
751
|
+
function setListener(callback) {
|
|
752
|
+
return callWithPersistentCallBack(getFuncName$1('setListener'), { callbackId: audioPlayerListenerCallbackId }, audioPlayerListenerCallbackId, callback);
|
|
753
|
+
}
|
|
754
|
+
// 注销视频播放器的事件回调
|
|
755
|
+
function deleteListener() {
|
|
756
|
+
deletePersistentCallBack(audioPlayerListenerCallbackId);
|
|
757
|
+
return callNative(getFuncName$1('deleteListener'), null);
|
|
758
|
+
}
|
|
759
|
+
var audio = {
|
|
760
|
+
playNew,
|
|
761
|
+
stop,
|
|
762
|
+
isPlaying,
|
|
763
|
+
hasPrepared,
|
|
764
|
+
getDuration,
|
|
765
|
+
getCurrentPosition,
|
|
766
|
+
getPlayerState,
|
|
767
|
+
pause,
|
|
768
|
+
start,
|
|
769
|
+
rePlay,
|
|
770
|
+
seekTo,
|
|
771
|
+
setLooping,
|
|
772
|
+
setVolume,
|
|
773
|
+
setListener,
|
|
774
|
+
deleteListener
|
|
775
|
+
};
|
|
776
|
+
|
|
777
|
+
const moduleName = 'file';
|
|
778
|
+
function getFuncName(name) {
|
|
779
|
+
return moduleName + '_' + name;
|
|
780
|
+
}
|
|
781
|
+
// 读取文件并返回文件的所有内容
|
|
782
|
+
// 参数:
|
|
783
|
+
// path: 读取文件的路径
|
|
784
|
+
// base64Flag: 是否以base64编码方式返回, 如果读取文件文件,则应该设置 base64Flag = false,如果读取二进制文件,则应该设置 base64Flag = true
|
|
785
|
+
function readAllContent(path, base64Flag = false) {
|
|
786
|
+
return callNative(getFuncName('readAllContent'), { path, base64Flag });
|
|
787
|
+
}
|
|
788
|
+
// 将内容全部写入文件
|
|
789
|
+
// 参数:
|
|
790
|
+
// path: 写入文件的路径
|
|
791
|
+
// content: 写入的内容,字符串,如果要写入二进制,应该先编码成 base64 字符串再传入
|
|
792
|
+
// base64Flag: 是否以base64编码方式传输content, 如果写文件文件,则应该设置 base64Flag = false,如果写入二进制文件,则应该设置 base64Flag = true
|
|
793
|
+
function writeAllContent(path, content, base64Flag = false) {
|
|
794
|
+
return callNative(getFuncName('writeAllContent'), { path, content, base64Flag });
|
|
795
|
+
}
|
|
796
|
+
// 获取应用基本目录的全路径名
|
|
797
|
+
function getBaseDir() {
|
|
798
|
+
return callNative(getFuncName('getBaseDir'), null);
|
|
799
|
+
}
|
|
800
|
+
// 获取 Cache 目录的全路径名
|
|
801
|
+
function getCacheDir() {
|
|
802
|
+
return callNative(getFuncName('getCacheDir'), null);
|
|
803
|
+
}
|
|
804
|
+
// 构建一个临时文件名,返回该文件的绝对路径的全文件路径名
|
|
805
|
+
// 参数:
|
|
806
|
+
// fileName: 指定临时文件的基本名,如果不指定,会默认随机生成一个文件名
|
|
807
|
+
function makeCacheFile(fileName = '') {
|
|
808
|
+
return callNative(getFuncName('makeCacheFile'), { fileName });
|
|
809
|
+
}
|
|
810
|
+
// 构建一个正常文件名,返回该文件的绝对路径的全文件路径名
|
|
811
|
+
// 参数:
|
|
812
|
+
// fileName: 指定文件的基本名,如果不指定,会默认随机生成一个文件名
|
|
813
|
+
function makeNormalFile(fileName = '') {
|
|
814
|
+
return callNative(getFuncName('makeNormalFile'), { fileName });
|
|
815
|
+
}
|
|
816
|
+
// 检测一个文件或者目录是否存在
|
|
817
|
+
// 参数:
|
|
818
|
+
// path: 指定路径
|
|
819
|
+
function exists(path) {
|
|
820
|
+
return callNative(getFuncName('exists'), { path });
|
|
821
|
+
}
|
|
822
|
+
// 检测一个路径是否为一个普通文件
|
|
823
|
+
// 参数:
|
|
824
|
+
// path: 指定路径
|
|
825
|
+
function isFile(path) {
|
|
826
|
+
return callNative(getFuncName('isFile'), { path });
|
|
827
|
+
}
|
|
828
|
+
// 检测一个路径是否为一个目录
|
|
829
|
+
// 参数:
|
|
830
|
+
// path: 指定路径
|
|
831
|
+
function isDirectory(path) {
|
|
832
|
+
return callNative(getFuncName('isDirectory'), { path });
|
|
833
|
+
}
|
|
834
|
+
// 检测一个路径表示的文件或目录 是否是隐藏的
|
|
835
|
+
// 参数:
|
|
836
|
+
// path: 指定路径
|
|
837
|
+
function isHidden(path) {
|
|
838
|
+
return callNative(getFuncName('isHidden'), { path });
|
|
839
|
+
}
|
|
840
|
+
// 检测一个路径表示的文件或目录 是否可读
|
|
841
|
+
// 参数:
|
|
842
|
+
// path: 指定路径
|
|
843
|
+
function canRead(path) {
|
|
844
|
+
return callNative(getFuncName('canRead'), { path });
|
|
845
|
+
}
|
|
846
|
+
// 检测一个路径表示的文件或目录 是否可写
|
|
847
|
+
// 参数:
|
|
848
|
+
// path: 指定路径
|
|
849
|
+
function canWrite(path) {
|
|
850
|
+
return callNative(getFuncName('canWrite'), { path });
|
|
851
|
+
}
|
|
852
|
+
// 检测一个路径表示的文件或目录 是否可执行
|
|
853
|
+
// 参数:
|
|
854
|
+
// path: 指定路径
|
|
855
|
+
function canExecute(path) {
|
|
856
|
+
return callNative(getFuncName('canExecute'), { path });
|
|
857
|
+
}
|
|
858
|
+
// 检测一个路径表示的文件或目录 的最后修改的时间,返回时间戳(1970年开始的秒数)
|
|
859
|
+
// 参数:
|
|
860
|
+
// path: 指定路径
|
|
861
|
+
function lastModified(path) {
|
|
862
|
+
return callNative(getFuncName('lastModified'), { path });
|
|
863
|
+
}
|
|
864
|
+
// 删除文件
|
|
865
|
+
// 参数:
|
|
866
|
+
// path: 指定路径
|
|
867
|
+
function deleteIt(path) {
|
|
868
|
+
return callNative(getFuncName('delete'), { path });
|
|
869
|
+
}
|
|
870
|
+
// 新建目录
|
|
871
|
+
// 参数:
|
|
872
|
+
// path: 指定路径
|
|
873
|
+
function mkdir(path) {
|
|
874
|
+
return callNative(getFuncName('mkdir'), { path });
|
|
875
|
+
}
|
|
876
|
+
// 新建目录 (如果父目录补存在则一并新建所有尚未存在的父目录)
|
|
877
|
+
// 参数:
|
|
878
|
+
// path: 指定路径
|
|
879
|
+
function mkdirs(path) {
|
|
880
|
+
return callNative(getFuncName('mkdirs'), { path });
|
|
881
|
+
}
|
|
882
|
+
// 改名
|
|
883
|
+
// 参数:
|
|
884
|
+
// from: 指定源路径
|
|
885
|
+
// to: 指定目标路径
|
|
886
|
+
function rename(from, to) {
|
|
887
|
+
return callNative(getFuncName('rename'), { from, to });
|
|
888
|
+
}
|
|
889
|
+
// 将相对路径的转换为全路径
|
|
890
|
+
// 参数:
|
|
891
|
+
// path: 指定路径
|
|
892
|
+
function getAbsolutePath(path) {
|
|
893
|
+
return callNative(getFuncName('getAbsolutePath'), { path });
|
|
894
|
+
}
|
|
895
|
+
// 指定路径创建新文件
|
|
896
|
+
// 参数:
|
|
897
|
+
// path: 指定路径
|
|
898
|
+
function createNewFile(path) {
|
|
899
|
+
return callNative(getFuncName('createNewFile'), { path });
|
|
900
|
+
}
|
|
901
|
+
// 设置可读属性
|
|
902
|
+
// 参数:
|
|
903
|
+
// path: 指定路径
|
|
904
|
+
// value: 是否可读
|
|
905
|
+
function setReadable(path, value = true) {
|
|
906
|
+
return callNative(getFuncName('setReadable'), { path, value });
|
|
907
|
+
}
|
|
908
|
+
// 设置可写属性
|
|
909
|
+
// 参数:
|
|
910
|
+
// path: 指定路径
|
|
911
|
+
// value: 是否可写
|
|
912
|
+
function setWritable(path, value = true) {
|
|
913
|
+
return callNative(getFuncName('setWritable'), { path, value });
|
|
914
|
+
}
|
|
915
|
+
// 设置可执行属性
|
|
916
|
+
// 参数:
|
|
917
|
+
// path: 指定路径
|
|
918
|
+
// value: 是否可执行
|
|
919
|
+
function setExecutable(path, value = true) {
|
|
920
|
+
return callNative(getFuncName('setExecutable'), { path, value });
|
|
921
|
+
}
|
|
922
|
+
// 设置文件最后修改的时间
|
|
923
|
+
// 参数:
|
|
924
|
+
// path: 指定路径
|
|
925
|
+
// value: 时间戳
|
|
926
|
+
function setLastModified(path, value = 0) {
|
|
927
|
+
return callNative(getFuncName('setLastModified'), { path, value });
|
|
928
|
+
}
|
|
929
|
+
// 读取目录,返回该目录下的文件列表
|
|
930
|
+
// 参数:
|
|
931
|
+
// path: 指定路径
|
|
932
|
+
function list(path) {
|
|
933
|
+
return callNative(getFuncName('list'), { path });
|
|
934
|
+
}
|
|
935
|
+
var file = {
|
|
936
|
+
readAllContent,
|
|
937
|
+
writeAllContent,
|
|
938
|
+
getBaseDir,
|
|
939
|
+
getCacheDir,
|
|
940
|
+
makeCacheFile,
|
|
941
|
+
makeNormalFile,
|
|
942
|
+
exists,
|
|
943
|
+
isFile,
|
|
944
|
+
isDirectory,
|
|
945
|
+
isHidden,
|
|
946
|
+
canRead,
|
|
947
|
+
canWrite,
|
|
948
|
+
canExecute,
|
|
949
|
+
lastModified,
|
|
950
|
+
deleteIt,
|
|
951
|
+
mkdir,
|
|
952
|
+
mkdirs,
|
|
953
|
+
rename,
|
|
954
|
+
getAbsolutePath,
|
|
955
|
+
createNewFile,
|
|
956
|
+
setReadable,
|
|
957
|
+
setWritable,
|
|
958
|
+
setExecutable,
|
|
959
|
+
setLastModified,
|
|
960
|
+
list
|
|
961
|
+
};
|
|
962
|
+
|
|
963
|
+
window['apkNativeCall'] = function apkNativeCall(str) {
|
|
964
|
+
let res = null;
|
|
965
|
+
//console.log('str1=' + str);
|
|
966
|
+
try {
|
|
967
|
+
const dec1 = atob(str);
|
|
968
|
+
//console.log('dec1=' + dec1);
|
|
969
|
+
const dec2 = decodeURIComponent(dec1);
|
|
970
|
+
//console.log('dec2=' + dec2);
|
|
971
|
+
res = JSON.parse(dec2);
|
|
972
|
+
//console.log('data type = ' + typeof(res.data));
|
|
973
|
+
}
|
|
974
|
+
catch (ex) {
|
|
975
|
+
console.error('error: ' + ex.toString());
|
|
976
|
+
return;
|
|
977
|
+
}
|
|
978
|
+
if (!res) {
|
|
979
|
+
console.error('apkNativeCall: res is empty');
|
|
980
|
+
return;
|
|
981
|
+
}
|
|
982
|
+
//
|
|
983
|
+
if (res.hasOwnProperty('cmd')) {
|
|
984
|
+
if (res['cmd'] == 'onApiCallBack') {
|
|
985
|
+
callbackFromNative(res['id'], res['data']);
|
|
986
|
+
}
|
|
987
|
+
else {
|
|
988
|
+
onCommandFromApp(res['cmd'], res['data']);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
};
|
|
992
|
+
function isRunInCooPark() {
|
|
993
|
+
return window['_CooPark'] ? true : false;
|
|
994
|
+
}
|
|
995
|
+
var index = {
|
|
996
|
+
network,
|
|
997
|
+
app,
|
|
998
|
+
system,
|
|
999
|
+
storage,
|
|
1000
|
+
androidView,
|
|
1001
|
+
audio,
|
|
1002
|
+
file,
|
|
1003
|
+
isRunInCooPark
|
|
1004
|
+
};
|
|
1005
|
+
|
|
1006
|
+
export { index as default, isRunInCooPark, setAppCommandCallback, unsetAppCommandCallback };
|