From fafc12655ba87b749bf1b3a202f2e85f5fa96612 Mon Sep 17 00:00:00 2001 From: duqingquan Date: Mon, 19 Jun 2023 10:59:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages.json | 11 + pages/SyntaxCase/paramTest.vue | 91 ++++++ pages/advance/advance.vue | 7 + .../uts-advance/utssdk/app-android/index.uts | 275 +++++++++++------- .../utssdk/app-android/index.uts | 2 +- 5 files changed, 277 insertions(+), 109 deletions(-) create mode 100644 pages/SyntaxCase/paramTest.vue diff --git a/pages.json b/pages.json index 18e3486..17bf47b 100644 --- a/pages.json +++ b/pages.json @@ -142,8 +142,19 @@ "enablePullDownRefresh": false } + }, + + { + "path" : "pages/SyntaxCase/paramTest", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + } + ], "tabBar": { "color": "#7A7E83", diff --git a/pages/SyntaxCase/paramTest.vue b/pages/SyntaxCase/paramTest.vue new file mode 100644 index 0000000..f874e78 --- /dev/null +++ b/pages/SyntaxCase/paramTest.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/pages/advance/advance.vue b/pages/advance/advance.vue index cf72516..24d5594 100644 --- a/pages/advance/advance.vue +++ b/pages/advance/advance.vue @@ -24,6 +24,8 @@ + + @@ -180,6 +182,11 @@ url: '/pages/SyntaxCase/index' }) }, + testParams: function() { + uni.navigateTo({ + url: '/pages/SyntaxCase/paramTest' + }) + }, testGetResourcePath: function() { uni.navigateTo({ url: '/pages/advance/iOS/getResourcePath' diff --git a/uni_modules/uts-advance/utssdk/app-android/index.uts b/uni_modules/uts-advance/utssdk/app-android/index.uts index 5aa92db..67e3c73 100644 --- a/uni_modules/uts-advance/utssdk/app-android/index.uts +++ b/uni_modules/uts-advance/utssdk/app-android/index.uts @@ -25,6 +25,7 @@ import EditText from 'android.widget.EditText'; import { UTSAndroid } from "io.dcloud.uts"; +import array from 'android.R.array'; @@ -36,47 +37,47 @@ type TimerOptions = { * 定时任务开始的回调 * @res 回调参数 */ - start: (res: string) => void; + start : (res : string) => void; /** * 定时任务执行的回调 * @res 回调参数 */ - work: (res: string) => void; + work : (res : string) => void; }; /** * 执行延时任务 */ -export function doTimerTask(opts:TimerOptions) { +export function doTimerTask(opts : TimerOptions) { opts.start('doTimerTask start'); - setTimeout(function() { + setTimeout(function () { opts.work("doTimerTask work"); }, 2000); - - return { name: "doTimerTask" }; + + return { name: "doTimerTask" }; } /** * 执行周期任务 */ -export function doIntervalTask(opts:TimerOptions) { - - let taskRet = setInterval(function() { +export function doIntervalTask(opts : TimerOptions) { + + let taskRet = setInterval(function () { opts.work("doIntervalTask work"); }, 2000); opts.start('doIntervalTask start'); - - return { name: "doIntervalTask",taskId:taskRet}; + + return { name: "doIntervalTask", taskId: taskRet }; } /** * 清除周期任务 */ -export function clearIntervalTask(taskId:number) { - +export function clearIntervalTask(taskId : number) { + clearInterval(taskId); - return { name: "clearIntervalTask"}; + return { name: "clearIntervalTask" }; } @@ -86,25 +87,25 @@ export function clearIntervalTask(taskId:number) { */ class AddUIRunnable implements Runnable { - override run():void { - - 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) + override run() : void { - let decorView = UTSAndroid.getUniActivity()!.window.decorView; + 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) + let decorView = UTSAndroid.getUniActivity()!.window.decorView; - let frameContent = decorView.findViewById(android.R.id.content) - let layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); - layoutParam.topMargin = 200; - frameContent.addView(textView,layoutParam) + let frameContent = decorView.findViewById(android.R.id.content) + let layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + layoutParam.topMargin = 200; - } + frameContent.addView(textView, layoutParam) + + } }; /** @@ -113,15 +114,15 @@ class AddUIRunnable implements Runnable { */ class RemoveUIRunnable extends Runnable { - override run():void { + override run() : void { + + let decorView = UTSAndroid.getUniActivity()!.getWindow().getDecorView(); + let frameContent = decorView.findViewById(android.R.id.content) - let decorView = UTSAndroid.getUniActivity()!.getWindow().getDecorView(); - let frameContent = decorView.findViewById(android.R.id.content) - let targetTV = frameContent.findViewWithTag("helloText") frameContent.removeView(targetTV) - } + } }; /** @@ -129,16 +130,16 @@ class RemoveUIRunnable extends Runnable { * */ export function addViewToDecorView() { - let uiRunable = new AddUIRunnable(); - UTSAndroid.getUniActivity()!.runOnUiThread(uiRunable) + let uiRunable = new AddUIRunnable(); + UTSAndroid.getUniActivity()!.runOnUiThread(uiRunable) } /** * 实现从decorview上移除指定view */ export function removeViewToDecorView() { - var uiRunable = new RemoveUIRunnable(); - UTSAndroid.getUniActivity()!.runOnUiThread(uiRunable) + var uiRunable = new RemoveUIRunnable(); + UTSAndroid.getUniActivity()!.runOnUiThread(uiRunable) } @@ -146,26 +147,26 @@ export function removeViewToDecorView() { /** * 引用资源路径 */ -export function getMetaConfig(): string { +export function getMetaConfig() : string { // let packageName = UTSAndroid.getAppContext()!.getPackageName(); - let appInfo = UTSAndroid.getAppContext()!.getPackageManager()!.getApplicationInfo(packageName,PackageManager.GET_META_DATA) - + let appInfo = UTSAndroid.getAppContext()!.getPackageManager()!.getApplicationInfo(packageName, PackageManager.GET_META_DATA) + let metaData = appInfo.metaData if (metaData == null) { - return ""; + return ""; } let adId = metaData.getString("DCLOUD_READ_PHONE_STATE") if (adId == null) { // 没有数据,说明是自定义基座,则读取自定义基座的配置 let customMetaId = metaData.getString("UTS_CUSTOM_LAUNCHER_META") - if(customMetaId == null){ + if (customMetaId == null) { return "" } return "自定义基座[UTS_CUSTOM_LAUNCHER_META]:" + customMetaId; } // 标准基座 - return "标准基座[DCLOUD_READ_PHONE_STATE]:" + adId; + return "标准基座[DCLOUD_READ_PHONE_STATE]:" + adId; } @@ -173,29 +174,29 @@ export function getMetaConfig(): string { /** * 引用资源路径 */ -export function getLogoPath(): string { - return logo; +export function getLogoPath() : string { + return logo; } /** * 音频播放器对象 */ -let globalPlayer:MediaPlayer| null = null; +let globalPlayer : MediaPlayer | null = null; /** * 播放asset资源中的音频 */ export function playAssetAudio() { - + let assetManager = UTSAndroid.getAppContext()!.getAssets(); let afd = assetManager.openFd("free.mp3"); - - if(globalPlayer == null){ + + if (globalPlayer == null) { globalPlayer = new MediaPlayer(); - globalPlayer!.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength()); + globalPlayer!.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); globalPlayer!.prepare(); globalPlayer!.start(); } - + } @@ -203,51 +204,51 @@ export function playAssetAudio() { * 停止播放asset资源中的音频 */ export function stopAssetAudio() { - - if(globalPlayer != null){ + + if (globalPlayer != null) { globalPlayer!.stop(); globalPlayer = null; } - + } -export function goOtherActivity(imageDone: (event:string) => void):boolean { - +export function goOtherActivity(imageDone : (event : string) => void) : boolean { + // 检查相关权限是否已经具备 if (ActivityCompat.checkSelfPermission(UTSAndroid.getUniActivity()!, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // 不具备权限,申请权限,并且告知用户监听失败 ActivityCompat.requestPermissions(UTSAndroid.getUniActivity()!, arrayOf(Manifest.permission.CAMERA), 1002) - + return false; } - - UTSAndroid.onAppActivityResult((requestCode: Int, resultCode: Int, data?: Intent) => { - let eventName = "onAppActivityResult - requestCode:" + requestCode + " -resultCode:"+resultCode + " -data:"+JSON.stringify(data); - console.log(eventName); + + UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data ?: Intent) => { + let eventName = "onAppActivityResult - requestCode:" + requestCode + " -resultCode:" + resultCode + " -data:" + JSON.stringify(data); + console.log(eventName); if ((requestCode == 1001) && (resultCode == Activity.RESULT_OK)) { - if (data != null) { - let bundle = data.getExtras(); - 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); - - } - } + if (data != null) { + let bundle = data.getExtras(); + 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); + + } + } }); - + let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //resolveActivity 返回可处理 Intent 的第一个 Activity 组件 if (takePictureIntent.resolveActivity(UTSAndroid.getUniActivity()!.getPackageManager()) != null) { UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 1001); } - + return true; - + } @@ -255,68 +256,68 @@ export function goOtherActivity(imageDone: (event:string) => void):boolean { * 初始化应用生命周期监听 * */ -export function initAppLifecycle(onLifecycleChange: (event:string) => void) { +export function initAppLifecycle(onLifecycleChange : (event : string) => void) { /** * application 内存不足的回调函数 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onapptrimmemory */ - UTSAndroid.onAppTrimMemory((level:Number) => { + UTSAndroid.onAppTrimMemory((level : Number) => { let eventName = "onAppTrimMemory - " + level; onLifecycleChange(eventName); - console.log(eventName); + console.log(eventName); }); - + /** * application 状态改变的回调函数 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onAppConfigChange */ - UTSAndroid.onAppConfigChange((ret:UTSJSONObject) => { + UTSAndroid.onAppConfigChange((ret : UTSJSONObject) => { let eventName = "onAppConfigChange - " + JSON.stringify(ret); onLifecycleChange(eventName); - console.log(eventName); + console.log(eventName); }); - - + + /** * activity 销毁生命周期回调 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy */ - UTSAndroid.onAppActivityDestroy(() => { + UTSAndroid.onAppActivityDestroy(() => { let eventName = "onAppActivityDestroy"; onLifecycleChange(eventName); - console.log(eventName); - }); - - + console.log(eventName); + }); + + /** * activity 失去焦点生命周期回调 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause */ - UTSAndroid.onAppActivityPause(() => { - let eventName = "onAppActivityPause" ; + UTSAndroid.onAppActivityPause(() => { + let eventName = "onAppActivityPause"; onLifecycleChange(eventName); - console.log(eventName); - }); + console.log(eventName); + }); /** * activity 得到焦点的周期回调 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume */ - UTSAndroid.onAppActivityResume(() => { + UTSAndroid.onAppActivityResume(() => { let eventName = "onAppActivityResume"; onLifecycleChange(eventName); - console.log(eventName); - }); + console.log(eventName); + }); /** * activity 回退物理按键事件回调 * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityback */ - UTSAndroid.onAppActivityBack(() => { + UTSAndroid.onAppActivityBack(() => { let eventName = "onAppActivityBack"; onLifecycleChange(eventName); - console.log(eventName); - }); + console.log(eventName); + }); } @@ -331,29 +332,87 @@ export function unRegLifecycle() { * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onapptrimmemory */ UTSAndroid.offAppTrimMemory(); - + /** * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onAppConfigChange */ UTSAndroid.offAppConfigChange(); - + /** * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy */ - UTSAndroid.offAppActivityDestroy(); - + UTSAndroid.offAppActivityDestroy(); + /** * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause */ - UTSAndroid.offAppActivityPause(); - + UTSAndroid.offAppActivityPause(); + /** * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume */ - UTSAndroid.offAppActivityResume(); + UTSAndroid.offAppActivityResume(); /** * activity 回退物理按键事件回调 */ - UTSAndroid.offAppActivityBack(); + UTSAndroid.offAppActivityBack(); + +} + +/** + * add since 2023-06-19 + * 新增传参测试用例 + */ +export function inputArray(input : Array) : boolean { + + let inputStr = JSON.stringify(input) + + if ('["a","b","c"]' == inputStr) { + return true + } + return false + +} + +export type ParamOptions = { + title : string, + array : Array +} +export function inputParam(option : ParamOptions) : boolean { + let inputStr = JSON.stringify(option) + if ('{"array":[1,2,3],"title":"hello"}' == inputStr) { + return true + } + return false +} + +export function returnArray() : Array { + 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) => 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) } \ No newline at end of file diff --git a/uni_modules/uts-nativepage/utssdk/app-android/index.uts b/uni_modules/uts-nativepage/utssdk/app-android/index.uts index dfc3ed2..994bd14 100644 --- a/uni_modules/uts-nativepage/utssdk/app-android/index.uts +++ b/uni_modules/uts-nativepage/utssdk/app-android/index.uts @@ -255,7 +255,7 @@ class DemoActivity extends Activity{ let recyclerView = this.findViewById(R.id.recycler_view) let layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); - let fruitAdapter = new FruitAdapter(arrayListOf("香蕉","苹果","大鸭梨")); + let fruitAdapter = new FruitAdapter(utsArrayOf("香蕉","苹果","大鸭梨")); recyclerView.setAdapter(fruitAdapter); } -- GitLab