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

杜庆泉's avatar
杜庆泉 已提交
115
		let decorView = UTSAndroid.getUniActivity()!.window.decorView;
杜庆泉's avatar
杜庆泉 已提交
116 117


杜庆泉's avatar
杜庆泉 已提交
118 119 120
		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
杜庆泉 已提交
121

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

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

127 128 129 130
/**
 * 实现一个移除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
杜庆泉 已提交
131 132
class RemoveUIRunnable extends Runnable {

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

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

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

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

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

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

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


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

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



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

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

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

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

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

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

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
242
  
杜庆泉's avatar
杜庆泉 已提交
243 244 245
	UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data ?: Intent) => {
		let eventName = "onAppActivityResult  -  requestCode:" + requestCode + " -resultCode:" + resultCode + " -data:" + JSON.stringify(data);
		console.log(eventName);
246
		if ((requestCode == 1001) && (resultCode == Activity.RESULT_OK)) {
杜庆泉's avatar
杜庆泉 已提交
247 248
			if (data != null) {
				let bundle = data.getExtras();
杜庆泉's avatar
杜庆泉 已提交
249
        
杜庆泉's avatar
杜庆泉 已提交
250 251 252 253 254 255 256 257 258 259 260
				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);

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

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

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

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


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

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

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

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


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


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

}

343 344 345 346 347 348 349 350 351 352

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


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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
401 402
export function inputParam(option : ParamOptions) : boolean {
	let inputStr = JSON.stringify(option)
杜庆泉's avatar
杜庆泉 已提交
403 404
	console.log(inputStr)
	if ('{"array":["1","2","3"],"title":"hello"}' == inputStr) {
杜庆泉's avatar
杜庆泉 已提交
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 437
		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
杜庆泉 已提交
438
}
杜庆泉's avatar
杜庆泉 已提交
439 440


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

杜庆泉's avatar
杜庆泉 已提交
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463
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
杜庆泉 已提交
464

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

512 513 514 515 516 517

export function openFileWithProvider(url:String){
	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
杜庆泉 已提交
518 519
  // 添加权限标志 
	intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) 
520 521 522
	const context = UTSAndroid.getUniActivity()!;
	context.startActivity(intent);
}