index.uts 12.3 KB
Newer Older
杜庆泉's avatar
杜庆泉 已提交
1 2 3 4 5
import Color from "android.graphics.Color";
import TextView from "android.widget.TextView";
import FrameLayout from "android.widget.FrameLayout";
import ViewGroup from "android.view.ViewGroup";
import Gravity from "android.view.Gravity";
杜庆泉's avatar
杜庆泉 已提交
6 7
import Runnable from 'java.lang.Runnable';
import MediaPlayer from 'android.media.MediaPlayer';
杜庆泉's avatar
杜庆泉 已提交
8
import Intent from 'android.content.Intent';
杜庆泉's avatar
杜庆泉 已提交
9

杜庆泉's avatar
杜庆泉 已提交
10
import logo from "../../static/logo.png";
杜庆泉's avatar
杜庆泉 已提交
11
import PackageManager from "android.content.pm.PackageManager";
杜庆泉's avatar
杜庆泉 已提交
12 13 14 15 16 17
import MediaStore from "android.provider.MediaStore";
import ActivityCompat from "androidx.core.app.ActivityCompat";
import Manifest from "android.Manifest";
import Activity from "android.app.Activity";
import Bitmap from "android.graphics.Bitmap";
import FileOutputStream from "java.io.FileOutputStream";
杜庆泉's avatar
杜庆泉 已提交
18

杜庆泉's avatar
杜庆泉 已提交
19 20 21 22 23 24

import Toast from 'android.widget.Toast';
import AlertDialog from 'android.app.AlertDialog';
import DialogInterface from 'android.content.DialogInterface';
import EditText from 'android.widget.EditText';

25

杜庆泉's avatar
杜庆泉 已提交
26
import array from 'android.R.array';
杜庆泉's avatar
杜庆泉 已提交
27
import File from 'java.io.File';
28

杜庆泉's avatar
杜庆泉 已提交
29

杜庆泉's avatar
杜庆泉 已提交
30 31 32
/**
 * 定时任务参数封装
 */
Y
yurj26 已提交
33
export type TimerOptions = {
34 35 36 37
	/**
	 * 定时任务开始的回调
	 * @res 回调参数
	 */
杜庆泉's avatar
杜庆泉 已提交
38
	start : (res : string) => void;
39 40 41 42
	/**
	* 定时任务执行的回调
	* @res 回调参数
	*/
杜庆泉's avatar
杜庆泉 已提交
43
	work : (res : string) => void;
杜庆泉's avatar
杜庆泉 已提交
44 45
};

Y
yurj26 已提交
46 47 48 49
export type TimerResult = {
	name : string;
	taskId ?: number;
};
杜庆泉's avatar
杜庆泉 已提交
50

杜庆泉's avatar
杜庆泉 已提交
51 52 53
/**
 * 执行延时任务
 */
Y
yurj26 已提交
54
export function doTimerTask(opts : TimerOptions): TimerResult {
杜庆泉's avatar
杜庆泉 已提交
55
	opts.start('doTimerTask start');
杜庆泉's avatar
杜庆泉 已提交
56
	setTimeout(function () {
杜庆泉's avatar
杜庆泉 已提交
57 58
		opts.work("doTimerTask work");
	}, 2000);
杜庆泉's avatar
杜庆泉 已提交
59

Y
yurj26 已提交
60 61 62 63 64
  const result: TimerResult = { 
    name: "doTimerTask" 
  }

	return result
杜庆泉's avatar
杜庆泉 已提交
65 66
}

杜庆泉's avatar
杜庆泉 已提交
67 68 69
/**
 * 执行周期任务
 */
Y
yurj26 已提交
70
export function doIntervalTask(opts : TimerOptions): TimerResult {
杜庆泉's avatar
杜庆泉 已提交
71 72

	let taskRet = setInterval(function () {
杜庆泉's avatar
杜庆泉 已提交
73 74 75
		opts.work("doIntervalTask work");
	}, 2000);
	opts.start('doIntervalTask start');
杜庆泉's avatar
杜庆泉 已提交
76

Y
yurj26 已提交
77 78 79 80 81 82
  const result: TimerResult = { 
    name: "doIntervalTask",
    taskId: taskRet
  }

	return result
杜庆泉's avatar
杜庆泉 已提交
83 84
}

杜庆泉's avatar
杜庆泉 已提交
85 86 87
/**
 * 清除周期任务
 */
Y
yurj26 已提交
88
export function clearIntervalTask(taskId : number): TimerResult {
杜庆泉's avatar
杜庆泉 已提交
89

杜庆泉's avatar
杜庆泉 已提交
90
	clearInterval(taskId);
Y
yurj26 已提交
91 92 93 94 95 96

  const result: TimerResult = { 
    name: "clearIntervalTask" 
  }

	return result
杜庆泉's avatar
杜庆泉 已提交
97 98 99
}


100 101 102 103
/**
 * 实现一个添加view的 Runnable类
 * 用法说明:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB
 */
104
class AddUIRunnable implements Runnable {
杜庆泉's avatar
杜庆泉 已提交
105

杜庆泉's avatar
杜庆泉 已提交
106
	override run() : void {
杜庆泉's avatar
杜庆泉 已提交
107

杜庆泉's avatar
杜庆泉 已提交
108 109 110 111 112 113
		let textView = new TextView(UTSAndroid.getUniActivity())
		textView.setText("HELLO WORLD");
		textView.textSize = 30.0.toFloat();
		textView.setBackgroundColor(Color.RED)
		textView.setTag("helloText")
		textView.setGravity(Gravity.CENTER)
杜庆泉's avatar
杜庆泉 已提交
114 115
    
		let decorView = UTSAndroid.getUniActivity()!.getWindow().getDecorView();
杜庆泉's avatar
杜庆泉 已提交
116

杜庆泉's avatar
杜庆泉 已提交
117 118 119
		let frameContent = decorView.findViewById<FrameLayout>(android.R.id.content)
		let layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
		layoutParam.topMargin = 200;
杜庆泉's avatar
杜庆泉 已提交
120

杜庆泉's avatar
杜庆泉 已提交
121 122 123
		frameContent.addView(textView, layoutParam)

	}
杜庆泉's avatar
杜庆泉 已提交
124 125
};

126 127 128 129
/**
 * 实现一个移除view的 Runnable类
 * 用法说明:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB
 */
杜庆泉's avatar
杜庆泉 已提交
130
class RemoveUIRunnable implements Runnable {
杜庆泉's avatar
杜庆泉 已提交
131

杜庆泉's avatar
杜庆泉 已提交
132 133 134 135
	override run() : void {

		let decorView = UTSAndroid.getUniActivity()!.getWindow().getDecorView();
		let frameContent = decorView.findViewById<FrameLayout>(android.R.id.content)
杜庆泉's avatar
杜庆泉 已提交
136

杜庆泉's avatar
杜庆泉 已提交
137 138
		let targetTV = frameContent.findViewWithTag<TextView>("helloText")
		frameContent.removeView(targetTV)
杜庆泉's avatar
杜庆泉 已提交
139

杜庆泉's avatar
杜庆泉 已提交
140
	}
杜庆泉's avatar
杜庆泉 已提交
141 142
};

143 144 145 146
/**
 * 实现添加view实例至decorview
 * 
 */
杜庆泉's avatar
杜庆泉 已提交
147
export function addViewToDecorView() {
杜庆泉's avatar
杜庆泉 已提交
148 149
	let uiRunable = new AddUIRunnable();
	UTSAndroid.getUniActivity()!.runOnUiThread(uiRunable)
杜庆泉's avatar
杜庆泉 已提交
150 151

}
152 153 154
/**
 * 实现从decorview上移除指定view
 */
杜庆泉's avatar
杜庆泉 已提交
155
export function removeViewToDecorView() {
杜庆泉's avatar
杜庆泉 已提交
156 157
	var uiRunable = new RemoveUIRunnable();
	UTSAndroid.getUniActivity()!.runOnUiThread(uiRunable)
杜庆泉's avatar
杜庆泉 已提交
158 159
}

杜庆泉's avatar
杜庆泉 已提交
160 161 162 163 164


/**
 * 引用资源路径
 */
杜庆泉's avatar
杜庆泉 已提交
165
export function getMetaConfig() : string {
杜庆泉's avatar
杜庆泉 已提交
166
	//
167
	let packageName = UTSAndroid.getAppContext()!.getPackageName();
杜庆泉's avatar
杜庆泉 已提交
168 169
	let appInfo = UTSAndroid.getAppContext()!.getPackageManager()!.getApplicationInfo(packageName, PackageManager.GET_META_DATA)

杜庆泉's avatar
杜庆泉 已提交
170 171
	let metaData = appInfo.metaData
	if (metaData == null) {
杜庆泉's avatar
杜庆泉 已提交
172
		return "";
杜庆泉's avatar
杜庆泉 已提交
173 174 175
	}
	let adId = metaData.getString("DCLOUD_READ_PHONE_STATE")
	if (adId == null) {
176 177
		// 没有数据,说明是自定义基座,则读取自定义基座的配置
		let customMetaId = metaData.getString("UTS_CUSTOM_LAUNCHER_META")
杜庆泉's avatar
杜庆泉 已提交
178
		if (customMetaId == null) {
179 180 181
			return ""
		}
		return "自定义基座[UTS_CUSTOM_LAUNCHER_META]:" + customMetaId;
杜庆泉's avatar
杜庆泉 已提交
182
	}
183
	// 标准基座
杜庆泉's avatar
杜庆泉 已提交
184
	return "标准基座[DCLOUD_READ_PHONE_STATE]:" + adId;
杜庆泉's avatar
杜庆泉 已提交
185 186 187 188
}



189 190 191
/**
 * 引用资源路径
 */
杜庆泉's avatar
杜庆泉 已提交
192 193
export function getLogoPath() : string {
	return logo;
杜庆泉's avatar
杜庆泉 已提交
194 195
}

打打卡夫卡's avatar
打打卡夫卡 已提交
196 197 198
/**
 * 音频播放器对象
 */
杜庆泉's avatar
杜庆泉 已提交
199
let globalPlayer : MediaPlayer | null = null;
200 201 202
/**
 * 播放asset资源中的音频
 */
杜庆泉's avatar
杜庆泉 已提交
203
export function playAssetAudio() {
杜庆泉's avatar
杜庆泉 已提交
204

205
	let assetManager = UTSAndroid.getAppContext()!.getAssets();
杜庆泉's avatar
杜庆泉 已提交
206
	let afd = assetManager.openFd("free.mp3");
杜庆泉's avatar
杜庆泉 已提交
207 208

	if (globalPlayer == null) {
打打卡夫卡's avatar
打打卡夫卡 已提交
209
		globalPlayer = new MediaPlayer();
杜庆泉's avatar
杜庆泉 已提交
210
		globalPlayer!.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
打打卡夫卡's avatar
打打卡夫卡 已提交
211 212 213
		globalPlayer!.prepare();
		globalPlayer!.start();
	}
杜庆泉's avatar
杜庆泉 已提交
214

杜庆泉's avatar
杜庆泉 已提交
215 216
}

杜庆泉's avatar
杜庆泉 已提交
217

打打卡夫卡's avatar
打打卡夫卡 已提交
218 219 220 221
/**
 * 停止播放asset资源中的音频
 */
export function stopAssetAudio() {
杜庆泉's avatar
杜庆泉 已提交
222 223

	if (globalPlayer != null) {
打打卡夫卡's avatar
打打卡夫卡 已提交
224 225 226
		globalPlayer!.stop();
		globalPlayer = null;
	}
杜庆泉's avatar
杜庆泉 已提交
227

打打卡夫卡's avatar
打打卡夫卡 已提交
228 229
}

230
//@UTSAndroid.Suppress("DEPRECATION")
杜庆泉's avatar
杜庆泉 已提交
231 232
export function goOtherActivity(imageDone : (event : string) => void) : boolean {

杜庆泉's avatar
杜庆泉 已提交
233
	// 检查相关权限是否已经具备
234
	if (ActivityCompat.checkSelfPermission(UTSAndroid.getUniActivity()!, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
杜庆泉's avatar
杜庆泉 已提交
235
		// 不具备权限,申请权限,并且告知用户监听失败
236
		ActivityCompat.requestPermissions(UTSAndroid.getUniActivity()!, arrayOf(Manifest.permission.CAMERA), 1002)
杜庆泉's avatar
杜庆泉 已提交
237

杜庆泉's avatar
杜庆泉 已提交
238 239
		return false;
	}
杜庆泉's avatar
杜庆泉 已提交
240

杜庆泉's avatar
杜庆泉 已提交
241
  
杜庆泉's avatar
杜庆泉 已提交
242 243 244
	UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data ?: Intent) => {
		let eventName = "onAppActivityResult  -  requestCode:" + requestCode + " -resultCode:" + resultCode + " -data:" + JSON.stringify(data);
		console.log(eventName);
245
		if ((requestCode == 1001) && (resultCode == Activity.RESULT_OK)) {
杜庆泉's avatar
杜庆泉 已提交
246 247
			if (data != null) {
				let bundle = data.getExtras();
杜庆泉's avatar
杜庆泉 已提交
248
        
杜庆泉's avatar
杜庆泉 已提交
249 250 251 252 253 254 255 256 257 258 259
				let mImageBitmap = bundle!.get("data") as Bitmap;
				let bitmapPath = UTSAndroid.getUniActivity()!.getExternalCacheDir()!.getPath() + "/photo.png"
				console.log(bitmapPath);
				try {
					mImageBitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(bitmapPath))
				} catch (e) {
				}
				imageDone(bitmapPath);

			}
		}
260
	});
杜庆泉's avatar
杜庆泉 已提交
261

杜庆泉's avatar
杜庆泉 已提交
262 263
	let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
	//resolveActivity 返回可处理 Intent 的第一个 Activity 组件
264 265
	if (takePictureIntent.resolveActivity(UTSAndroid.getUniActivity()!.getPackageManager()) != null) {
		UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 1001);
杜庆泉's avatar
杜庆泉 已提交
266
	}
杜庆泉's avatar
杜庆泉 已提交
267

杜庆泉's avatar
杜庆泉 已提交
268
	return true;
杜庆泉's avatar
杜庆泉 已提交
269

杜庆泉's avatar
杜庆泉 已提交
270
}
杜庆泉's avatar
杜庆泉 已提交
271 272


273 274 275 276
/**
 * 初始化应用生命周期监听
 * 
 */
杜庆泉's avatar
杜庆泉 已提交
277
export function initAppLifecycle(onLifecycleChange : (event : string) => void) {
杜庆泉's avatar
杜庆泉 已提交
278

杜庆泉's avatar
杜庆泉 已提交
279

280 281 282 283
	/**
	 * application 内存不足的回调函数
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onapptrimmemory
	 */
杜庆泉's avatar
杜庆泉 已提交
284
	UTSAndroid.onAppTrimMemory((level : Number) => {
285 286
		let eventName = "onAppTrimMemory - " + level;
		onLifecycleChange(eventName);
杜庆泉's avatar
杜庆泉 已提交
287
		console.log(eventName);
288
	});
杜庆泉's avatar
杜庆泉 已提交
289

290 291 292 293
	/**
	 * application 状态改变的回调函数
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onAppConfigChange
	 */
杜庆泉's avatar
杜庆泉 已提交
294
	UTSAndroid.onAppConfigChange((ret : UTSJSONObject) => {
295 296
		let eventName = "onAppConfigChange - " + JSON.stringify(ret);
		onLifecycleChange(eventName);
杜庆泉's avatar
杜庆泉 已提交
297
		console.log(eventName);
298
	});
杜庆泉's avatar
杜庆泉 已提交
299 300


301 302 303 304
	/**
	 * activity 销毁生命周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy
	 */
杜庆泉's avatar
杜庆泉 已提交
305
	UTSAndroid.onAppActivityDestroy(() => {
杜庆泉's avatar
杜庆泉 已提交
306
		let eventName = "onAppActivityDestroy";
杜庆泉's avatar
杜庆泉 已提交
307
		onLifecycleChange(eventName);
杜庆泉's avatar
杜庆泉 已提交
308 309 310 311
		console.log(eventName);
	});


312 313 314 315
	/**
	 * activity 失去焦点生命周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause
	 */
杜庆泉's avatar
杜庆泉 已提交
316 317
	UTSAndroid.onAppActivityPause(() => {
		let eventName = "onAppActivityPause";
杜庆泉's avatar
杜庆泉 已提交
318
		onLifecycleChange(eventName);
杜庆泉's avatar
杜庆泉 已提交
319 320
		console.log(eventName);
	});
321 322 323 324
	/**
	 * activity 得到焦点的周期回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume
	 */
杜庆泉's avatar
杜庆泉 已提交
325
	UTSAndroid.onAppActivityResume(() => {
杜庆泉's avatar
杜庆泉 已提交
326
		let eventName = "onAppActivityResume";
杜庆泉's avatar
杜庆泉 已提交
327
		onLifecycleChange(eventName);
杜庆泉's avatar
杜庆泉 已提交
328 329
		console.log(eventName);
	});
330 331 332 333
	/**
	 * activity 回退物理按键事件回调
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityback
	 */
杜庆泉's avatar
杜庆泉 已提交
334
	UTSAndroid.onAppActivityBack(() => {
杜庆泉's avatar
杜庆泉 已提交
335
		let eventName = "onAppActivityBack";
杜庆泉's avatar
杜庆泉 已提交
336
		onLifecycleChange(eventName);
杜庆泉's avatar
杜庆泉 已提交
337 338
		console.log(eventName);
	});
杜庆泉's avatar
杜庆泉 已提交
339 340 341

}

342 343 344 345 346 347 348 349 350 351

/**
 * 取消注册生命周期函数
 */
export function unRegLifecycle() {


	/**
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onapptrimmemory
	 */
352
	UTSAndroid.offAppTrimMemory();
杜庆泉's avatar
杜庆泉 已提交
353

354 355 356
	/**
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onAppConfigChange
	 */
357
	UTSAndroid.offAppConfigChange();
杜庆泉's avatar
杜庆泉 已提交
358

359 360 361
	/**
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy
	 */
杜庆泉's avatar
杜庆泉 已提交
362 363
	UTSAndroid.offAppActivityDestroy();

364 365 366
	/**
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause
	 */
杜庆泉's avatar
杜庆泉 已提交
367 368
	UTSAndroid.offAppActivityPause();

369 370 371
	/**
	 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume
	 */
杜庆泉's avatar
杜庆泉 已提交
372
	UTSAndroid.offAppActivityResume();
373 374 375
	/**
	 * activity 回退物理按键事件回调
	 */
杜庆泉's avatar
杜庆泉 已提交
376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398
	UTSAndroid.offAppActivityBack();

}

/**
 * add since 2023-06-19 
 * 新增传参测试用例
 */
export function inputArray(input : Array<string>) : boolean {

	let inputStr = JSON.stringify(input)

	if ('["a","b","c"]' == inputStr) {
		return true
	}
	return false

}

export type ParamOptions = {
	title : string,
	array : Array<string>
}
399

杜庆泉's avatar
杜庆泉 已提交
400 401
export function inputParam(option : ParamOptions) : boolean {
	let inputStr = JSON.stringify(option)
杜庆泉's avatar
杜庆泉 已提交
402 403
	console.log(inputStr)
	if ('{"array":["1","2","3"],"title":"hello"}' == inputStr) {
杜庆泉's avatar
杜庆泉 已提交
404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436
		return true
	}
	return false
}

export function returnArray() : Array<string> {
	return ['1', '2', '3']
}

export function returnParam() : ParamOptions {

	let ret : ParamOptions = {
		title: "returnParam",
		array: ['1', '2', '3']
	}
	return ret

}

export type ParamCallback = (res : ParamOptions) => void
export type ArrayCallback = (res : Array<string>) => void

export function callbackArray(callback : ArrayCallback) {
	callback(['8', '8', '8'])
}


export function callbackParam(callback : ParamCallback) {
	let ret : ParamOptions = {
		title: "callbackParam",
		array: ['4', '5', '6']
	}
	callback(ret)
杜庆泉's avatar
杜庆泉 已提交
437
}
杜庆泉's avatar
杜庆泉 已提交
438 439


杜庆泉's avatar
杜庆泉 已提交
440 441 442 443
/**
 * 
 */
export function quitApp(){
杜庆泉's avatar
杜庆泉 已提交
444
	UTSAndroid.exit()
杜庆泉's avatar
杜庆泉 已提交
445 446
}

杜庆泉's avatar
杜庆泉 已提交
447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
export class User {  

    private name : string;  
    private age : Int;  

    constructor(hostP : string, port : Int) {  
        this.name = hostP;  
        this.age = port;  
    }  
	
	describeSelf():string{
		let text = "name = " + this.name + ";age = " + this.age
		return text
	}
}

杜庆泉's avatar
杜庆泉 已提交
463

杜庆泉's avatar
杜庆泉 已提交
464
export function arrayConvert():boolean{
杜庆泉's avatar
杜庆泉 已提交
465 466 467 468 469
	
	// kotlin.collections.List 转换 Array
	let kotlinList = mutableListOf("hello","world")
	let utsArr1 = Array.fromNative(kotlinList) 
	
杜庆泉's avatar
杜庆泉 已提交
470
	if(utsArr1[0] != "hello"){
杜庆泉's avatar
杜庆泉 已提交
471 472 473 474 475 476 477
		return false
	}
	
	// kotlin.Array 转换 Array
	let kotlinArray = arrayOf("hello","world")
	let utsArr2 = Array.fromNative(kotlinArray)
	
杜庆泉's avatar
杜庆泉 已提交
478
	if(utsArr2[0] != "hello"){
杜庆泉's avatar
杜庆泉 已提交
479 480 481
		return false
	}
	
杜庆泉's avatar
杜庆泉 已提交
482
	let b1 = byteArrayOf(-1,2,0,3,4,5)
杜庆泉's avatar
杜庆泉 已提交
483
	let c1 = Array.fromNative(b1)
杜庆泉's avatar
杜庆泉 已提交
484 485
  
	if(c1[0] != (-1 as Number).toByte()){
杜庆泉's avatar
杜庆泉 已提交
486 487 488 489 490
		return false
	}
	
	
	let b2 = longArrayOf(-1,2,0,3,4,5)
杜庆泉's avatar
杜庆泉 已提交
491
	let c2 = Array.fromNative(b2)
杜庆泉's avatar
杜庆泉 已提交
492
	if(c2[0] != (-1 as Number).toLong()){
杜庆泉's avatar
杜庆泉 已提交
493 494 495 496
		return false
	}
	
	let b3 = shortArrayOf(-1,2,0,3,4,5)
杜庆泉's avatar
杜庆泉 已提交
497
	let c3 = Array.fromNative(b3)
杜庆泉's avatar
杜庆泉 已提交
498
	if(c3[0] != (-1 as Number).toShort()){
杜庆泉's avatar
杜庆泉 已提交
499 500 501 502
		return false
	}
	
	let b4 = intArrayOf(-1,2,0,3,4,5)
杜庆泉's avatar
杜庆泉 已提交
503
	let c4 = Array.fromNative(b4)
杜庆泉's avatar
杜庆泉 已提交
504
	if(c4[0] != (-1 as Number).toInt()){
杜庆泉's avatar
杜庆泉 已提交
505 506 507 508 509
		return false
	}
	
	return true
}
510

511

杜庆泉's avatar
杜庆泉 已提交
512
export function openFileWithProvider(){
513 514 515 516
	let file = new File(UTSAndroid.getResourcePath("static/logo.png"))
  const uri = UTSAndroid.getFileProviderUri(file)
	console.log("uri",uri.toString())
	const intent = new Intent(Intent.ACTION_VIEW, uri)
杜庆泉's avatar
杜庆泉 已提交
517 518
  // 添加权限标志 
	intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) 
519 520 521
	const context = UTSAndroid.getUniActivity()!;
	context.startActivity(intent);
}