Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
c7f6fadd
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
c7f6fadd
编写于
7月 09, 2024
作者:
杜庆泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update uts-for-android.md
上级
0912911c
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
23 addition
and
380 deletion
+23
-380
docs/plugin/uts-for-android.md
docs/plugin/uts-for-android.md
+23
-380
未找到文件。
docs/plugin/uts-for-android.md
浏览文件 @
c7f6fadd
...
...
@@ -389,16 +389,14 @@ maven { url 'https://jitpack.io' }
## 4 Android内置库@iodcloudutsandroid
在uts里,Android的所有api都可以访问。
**在UTS语言中,所有的Android原生API都可以调用**
但是对于Android开发中高频使用
`application`
和
`activity`
等,UTS通过内置对象
`UTSAndroid`
进行了包裹和封装。具体见下:
对于Android开发中高频使用的
`application`
/
`activity`
等系统能力、
`uni-app`
/
`uni-app x`
运行时框架信息等,UTS通过内置对象
`UTSAndroid`
进行了封装,以便开发者调用
### 4.1 application 上下文相关
下面列出了常见API的使用示例,完整的
`UTSAndroid`
API文档参考:https://doc.dcloud.net.cn/uni-app-x/uts/utsandroid.html
#### 4.1.1 getAppContext
> HBuilderX 3.6.3+
#### getAppContext
```
ts
import
{
UTSAndroid
}
from
"
io.dcloud.uts
"
;
...
...
@@ -434,110 +432,7 @@ console.log(app)
```
#### 4.1.2 getResourcePath(resourceName:String)
> HBuilderX 3.6.3+
```
ts
import
{
UTSAndroid
}
from
"
io.dcloud.uts
"
;
```
获取指定插件资源的运行期绝对路径
```
ts
// [示例]获取指定资源路径
// 得到文件运行时路径: `/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/__UNI__3732623/www/uni_modules/test-uts-static/static/logo.png`
UTSAndroid
.
getResourcePath
(
"
uni_modules/test-uts-static/static/logo.png
"
)
```
#### 4.1.3 onAppTrimMemory / offAppTrimMemory
##### onAppTrimMemory
> HBuilderX 3.6.11+
App 内存不足时,系统回调函数 对应原生的API: onTrimMemory
```
ts
UTSAndroid
.
onAppTrimMemory
((
level
:
Number
)
=>
{
let
eventName
=
"
onAppTrimMemory -
"
+
level
;
console
.
log
(
eventName
);
});
```
##### offAppTrimMemory
> HBuilderX 3.6.11+
onAppTrimMemory 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除所有监听
UTSAndroid
.
offAppTrimMemory
()
// 移除指定监听
UTSAndroid
.
offAppTrimMemory
((
level
:
Number
)
=>
{
});
```
#### 4.1.4 onAppConfigChange / offAppConfigChange
##### onAppConfigChange
> HBuilderX 3.6.1+
App 配置发生变化时触发,比如横竖屏切换 对应原生的API: onConfigurationChanged
```
ts
UTSAndroid
.
onAppConfigChange
((
ret
:
UTSJSONObject
)
=>
{
let
eventName
=
"
onAppConfigChange -
"
+
JSON
.
stringify
(
ret
);
console
.
log
(
eventName
);
});
```
##### offAppConfigChange
与onAppConfigChange 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除所有监听
UTSAndroid
.
offAppConfigChange
();
// 移除指定监听
UTSAndroid
.
offAppConfigChange
(
function
(
ret
){
});
```
--------------------------------
特别说明:除了本章节列出的函数外,android环境下 application 其他上下文方法都可以通过 getAppContext()!.xxx()的方式实现
比如获取app缓存目录:
```
ts
UTSAndroid
.
getAppContext
()
!
.
getExternalCacheDir
()
!
.
getPath
()
```
### 4.2 Activity 上下文 @activity
#### 4.2.1 getUniActivity
> HBuilderX 3.6.11+
#### getUniActivity
获取当前插件所属的activity实例,对应android平台 getActivity 函数实现
...
...
@@ -549,257 +444,13 @@ let decorView = UTSAndroid.getUniActivity()!.window.decorView;
let
frameContent
=
decorView
.
findViewById
<
FrameLayout
>
(
android
.
R
.
id
.
content
)
```
#### 4.2.2 onAppActivityPause / offAppActivityPause
##### onAppActivityPause
> HBuilderX 3.6.3+
App的activity onPause时触发
```
ts
UTSAndroid
.
onAppActivityPause
(()
=>
{
let
eventName
=
"
onAppActivityPause -
"
+
Date
.
now
();
console
.
log
(
eventName
);
});
```
##### offAppActivityPause
> HBuilderX 3.6.9+
onAppActivityPause 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除全部监听
UTSAndroid
.
offAppActivityPause
();
// 移除指定监听
UTSAndroid
.
offAppActivityPause
(()
=>
{
});
```
#### 4.2.3 onAppActivityResume / offAppActivityResume
##### onAppActivityResume
> HBuilderX 3.6.3+
App的activity onResume时触发
```
ts
UTSAndroid
.
onAppActivityResume
(()
=>
{
let
eventName
=
"
onAppActivityResume -
"
+
Date
.
now
();
console
.
log
(
eventName
);
});
```
##### offAppActivityResume
> HBuilderX 3.6.9+
onAppActivityResume 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除全部监听
UTSAndroid
.
onAppActivityResume
();
// 移除指定监听
UTSAndroid
.
onAppActivityResume
(()
=>
{
});
```
#### 4.2.4 onAppActivityDestroy / offAppActivityDestroy
##### onAppActivityDestroy
> HBuilderX 3.6.3+
App 的 activity onDestroy时触发
```
ts
UTSAndroid
.
onAppActivityDestroy
(()
=>
{
let
eventName
=
"
onAppActivityDestroy-
"
+
Date
.
now
();
console
.
log
(
eventName
);
});
```
##### offAppActivityDestroy
> HBuilderX 3.6.9+
onAppActivityDestroy 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除全部监听
UTSAndroid
.
offAppActivityDestroy
();
// 移除指定监听
UTSAndroid
.
offAppActivityDestroy
(()
=>
{
});
```
#### 4.2.5 onAppActivityBack / offAppActivityBack
##### onAppActivityBack
> HBuilderX 3.6.3+
App 的 activity 回退物理按键点击时触发
```
ts
UTSAndroid
.
onAppActivityBack
(()
=>
{
let
eventName
=
"
onAppActivityBack-
"
+
Date
.
now
();
console
.
log
(
eventName
);
});
```
##### offAppActivityBack
> HBuilderX 3.6.9+
onAppActivityBack 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除全部监听
UTSAndroid
.
offAppActivityBack
();
// 移除指定监听
UTSAndroid
.
offAppActivityBack
(()
=>
{
});
```
#### 4.2.6 onAppActivityResult / offAppActivityResult
##### onAppActivityResult
> HBuilderX 3.6.8+
App 的 activity 启动其他activity的回调结果监听 对应原生的
[
onActivityResult
](
https://developer.android.com/training/basics/intents/result
)
需要特别注意的是
`requestCode`
参数,这个参数用于区别 不同的请求来源,开发者应该只处理自己发起请求
```
ts
let
customRequestCode
=
12000
UTSAndroid
.
onAppActivityResult
((
requestCode
:
Int
,
resultCode
:
Int
,
data
?:
Intent
)
=>
{
if
(
requestCode
==
12000
){
// 我们发起的请求
let
eventName
=
"
onAppActivityResult - requestCode:
"
+
requestCode
+
"
-resultCode:
"
+
resultCode
+
"
-data:
"
+
JSON
.
stringify
(
data
);
console
.
log
(
eventName
);
}
else
{
// 别的代码发起的请求,不要处理
}
});
```
##### offAppActivityResult
> HBuilderX 3.6.9+
onAppActivityResult 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除全部监听
UTSAndroid
.
offAppActivityResult
();
// 移除指定监听
UTSAndroid
.
offAppActivityResult
(()
=>
{
});
```
#### 4.2.7 onAppActivityRequestPermissionsResult / offAppActivityRequestPermissionsResult
> 已废弃,请使用 4.4章节系统权限管理替代此api
##### onAppActivityRequestPermissionsResult
> HBuilderX 3.6.3+
App 的 activity 获得权限请求结果的回调
```
ts
UTSAndroid
.
onAppActivityRequestPermissionsResult
((
requestCode
:
number
,
permissions
:
Array
<
string
>
,
grantResults
:
Array
<
number
>
)
=>
{
console
.
log
(
grantResults
);
console
.
log
(
permissions
);
console
.
log
(
requestCode
);
});
//发起定位权限申请
let
permission
=
[
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
]
ActivityCompat
.
requestPermissions
(
getUniActivity
()
!
,
permission
,
1001
);
```
##### offAppActivityRequestPermissionsResult
> HBuilderX 3.6.9+
onAppActivityRequestPermissionsResult 对应的反注册函数
如果传入的函数可为空,如果为空,则视为移除所有监听
```
ts
// 移除全部监听
UTSAndroid
.
offAppActivityRequestPermissionsResult
();
// 移除指定监听
UTSAndroid
.
offAppActivityRequestPermissionsResult
(()
=>
{
});
```
-----------------------------
特别说明:除了本章节列出的函数外,android环境下 activity 其他上下文方法都可以通过 getUniActivity()!.xxx()的方式实现
比如获取当前activity的顶层View容器
```
ts
UTSAndroid
.
getUniActivity
()
!
.
getWindow
().
getDecorView
();
```
### 4.3 UTS插件开发中Activity生命周期注意事项
#### onAppActivityDestroy
即使在android原生开发中,应用的生命周期管理也是十分重要的。
[
android生命周期
](
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=zh_cn
)
UTS环境中对原生的生命周期进行了封装和简化,大多数情况下,开发者只需要了解本章节中列出的 activity相关生命周期即可。
其中最为常见的场景,要数
`onAppActivityDestroy`
中释放系统资源了:
其中最为常见的场景,要数
`onAppActivityDestroy`
中释放系统资源:
举个例子,以Hello UTS
[
用户截屏插件
](
https://ext.dcloud.net.cn/plugin?id=9897
)
为例。
...
...
@@ -819,7 +470,8 @@ UTSAndroid.onAppActivityDestroy(function(){
开发者在开发UTS插件时,如果遇到了类似使用系统组件的情况,也需要特别关注资源释放情况。
### 4.4 系统权限管理
#### 4.4 requestSystemPermission
HBuilder X 3.8.2版本之后支持
...
...
@@ -827,10 +479,6 @@ HBuilder X 3.8.2版本之后支持
如果开发者使用了相同依赖,可能打包冲突。需要修改为 complileOnly 或者 修改为本章节内置API
##### 4.4.1 requestSystemPermission
请求系统权限,对应的两个参数:
1 请求的权限列表
2 请求结果回调
...
...
@@ -851,38 +499,33 @@ UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!,permission,funct
})
```
##### 4.4.2 gotoSystemPermissionActivity
跳转至系统设置权限设置界面,一般是用户选择了不再继续询问选项后
--------------------------------
```
let permissionWifi = ["android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"]
UTSAndroid.gotoSystemPermissionActivity(UTSAndroid.getUniActivity()!,permissionWifi)
```
特别说明:
##### 4.4.3 getSystemPermissionDenied@getSystemPermissionDenied
除了本章节列出的函数外,android环境下 application 其他上下文方法都可以通过 getAppContext()!.xxx()的方式实现
判断权限是否已经被用户禁止
比如获取app缓存目录:
```
ts
let
permission
=
[
"
android.permission.ACCESS_FINE_LOCATION
"
,
"
android.permission.ACCESS_FINE_LOCATION
"
]
let
denied
=
UTSAndroid
.
getSystemPermissionDenied
(
UTSAndroid
.
getUniActivity
()
!
,
permission
)
// 执行结果
[
android
.
permission
.
ACCESS_FINE_LOCATION
,
android
.
permission
.
ACCESS_FINE_LOCATION
]
UTSAndroid
.
getAppContext
()
!
.
getExternalCacheDir
()
!
.
getPath
()
```
##### 4.4.4 checkSystemPermissionGranted
判断权限是否已经被用户授予
activity 其他上下文方法都可以通过 getUniActivity()!.xxx()的方式实现
比如获取当前activity的顶层View容器
```
ts
let
permission
=
[
"
android.permission.ACCESS_FINE_LOCATION
"
,
"
android.permission.ACCESS_FINE_LOCATION
"
]
let
grant
=
UTSAndroid
.
checkSystemPermissionGranted
(
UTSAndroid
.
getUniActivity
()
!
,
permission
)
// 执行结果
false
UTSAndroid
.
getUniActivity
()
!
.
getWindow
().
getDecorView
();
```
## 5 Kotlin与UTS差异重点介绍 (持续更新)
通过上面的章节的阅读,至此我们认为你已经掌握了UTS语法,掌握了基本的Kotlin语法,掌握了UTS对于android资源的支持。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录