utsandroid.md 20.7 KB
Newer Older
D
DCloud_LXH 已提交
1 2
# UTSAndroid

W
x  
wanganxp 已提交
3
app-android平台专有内置对象。在uni-app和uni-app x的uts环境中均可使用。
D
DCloud_LXH 已提交
4 5 6 7

## 静态方法


杜庆泉's avatar
杜庆泉 已提交
8
### onAppConfigChange
D
DCloud_LXH 已提交
9 10 11 12 13 14 15 16 17

<!-- UTSJSON.UTSAndroid.onAppConfigChange.description -->

<!-- UTSJSON.UTSAndroid.onAppConfigChange.param -->

<!-- UTSJSON.UTSAndroid.onAppConfigChange.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppConfigChange.compatibility -->

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

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

杜庆泉's avatar
杜庆泉 已提交
20
### offAppConfigChange
D
DCloud_LXH 已提交
21 22 23 24 25 26 27 28 29

<!-- UTSJSON.UTSAndroid.offAppConfigChange.description -->

<!-- UTSJSON.UTSAndroid.offAppConfigChange.param -->

<!-- UTSJSON.UTSAndroid.offAppConfigChange.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppConfigChange.compatibility -->

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

杜庆泉's avatar
杜庆泉 已提交
31
### onAppTrimMemory
D
DCloud_LXH 已提交
32 33 34 35 36 37 38 39 40

<!-- UTSJSON.UTSAndroid.onAppTrimMemory.description -->

<!-- UTSJSON.UTSAndroid.onAppTrimMemory.param -->

<!-- UTSJSON.UTSAndroid.onAppTrimMemory.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppTrimMemory.compatibility -->

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

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

杜庆泉's avatar
杜庆泉 已提交
43
### offAppTrimMemory
D
DCloud_LXH 已提交
44 45 46 47 48 49 50 51 52

<!-- UTSJSON.UTSAndroid.offAppTrimMemory.description -->

<!-- UTSJSON.UTSAndroid.offAppTrimMemory.param -->

<!-- UTSJSON.UTSAndroid.offAppTrimMemory.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppTrimMemory.compatibility -->

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

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

杜庆泉's avatar
杜庆泉 已提交
55
### onAppActivityPause
D
DCloud_LXH 已提交
56 57 58 59 60 61 62 63 64

<!-- UTSJSON.UTSAndroid.onAppActivityPause.description -->

<!-- UTSJSON.UTSAndroid.onAppActivityPause.param -->

<!-- UTSJSON.UTSAndroid.onAppActivityPause.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppActivityPause.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
65 66 67 68 69 70
```ts
UTSAndroid.onAppActivityPause(() => {
    let eventName = "onAppActivityPause - " + Date.now();
    console.log(eventName);
});
```
杜庆泉's avatar
杜庆泉 已提交
71

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

杜庆泉's avatar
杜庆泉 已提交
73
### offAppActivityPause
D
DCloud_LXH 已提交
74 75 76 77 78 79 80 81 82

<!-- UTSJSON.UTSAndroid.offAppActivityPause.description -->

<!-- UTSJSON.UTSAndroid.offAppActivityPause.param -->

<!-- UTSJSON.UTSAndroid.offAppActivityPause.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppActivityPause.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
83 84 85 86 87 88 89
```ts
// 移除全部监听
UTSAndroid.offAppActivityPause();
// 移除指定监听
UTSAndroid.offAppActivityPause(() => {
});
```
杜庆泉's avatar
杜庆泉 已提交
90 91


杜庆泉's avatar
杜庆泉 已提交
92
### onAppActivityResume
D
DCloud_LXH 已提交
93 94 95 96 97 98 99 100 101

<!-- UTSJSON.UTSAndroid.onAppActivityResume.description -->

<!-- UTSJSON.UTSAndroid.onAppActivityResume.param -->

<!-- UTSJSON.UTSAndroid.onAppActivityResume.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppActivityResume.compatibility -->

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

杜庆泉's avatar
杜庆泉 已提交
103 104 105 106 107 108 109 110 111 112

```ts
UTSAndroid.onAppActivityResume(() => {
     let eventName = "onAppActivityResume - " + Date.now();
     console.log(eventName);
});
```



杜庆泉's avatar
杜庆泉 已提交
113
### offAppActivityResume
D
DCloud_LXH 已提交
114 115 116 117 118 119 120 121 122

<!-- UTSJSON.UTSAndroid.offAppActivityResume.description -->

<!-- UTSJSON.UTSAndroid.offAppActivityResume.param -->

<!-- UTSJSON.UTSAndroid.offAppActivityResume.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppActivityResume.compatibility -->

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

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

杜庆泉's avatar
杜庆泉 已提交
125 126 127 128 129 130 131 132 133
```ts
// 移除全部监听
UTSAndroid.onAppActivityResume();
// 移除指定监听
UTSAndroid.onAppActivityResume(() => {
});
```


杜庆泉's avatar
杜庆泉 已提交
134
### onAppActivityDestroy
D
DCloud_LXH 已提交
135 136 137 138 139 140 141 142 143

<!-- UTSJSON.UTSAndroid.onAppActivityDestroy.description -->

<!-- UTSJSON.UTSAndroid.onAppActivityDestroy.param -->

<!-- UTSJSON.UTSAndroid.onAppActivityDestroy.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppActivityDestroy.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
144 145 146 147 148 149
```ts
UTSAndroid.onAppActivityDestroy(() => {
     let eventName = "onAppActivityDestroy- " + Date.now();
     console.log(eventName);
});
```
杜庆泉's avatar
杜庆泉 已提交
150

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

杜庆泉's avatar
杜庆泉 已提交
152
### offAppActivityDestroy
D
DCloud_LXH 已提交
153 154 155 156 157 158 159 160 161

<!-- UTSJSON.UTSAndroid.offAppActivityDestroy.description -->

<!-- UTSJSON.UTSAndroid.offAppActivityDestroy.param -->

<!-- UTSJSON.UTSAndroid.offAppActivityDestroy.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppActivityDestroy.compatibility -->

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

杜庆泉's avatar
杜庆泉 已提交
163 164 165 166 167 168 169 170
```ts
// 移除全部监听
UTSAndroid.offAppActivityDestroy();
// 移除指定监听
UTSAndroid.offAppActivityDestroy(() => {
});
```

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

杜庆泉's avatar
杜庆泉 已提交
172
### onAppActivityResult
D
DCloud_LXH 已提交
173 174 175 176 177 178 179 180 181

<!-- UTSJSON.UTSAndroid.onAppActivityResult.description -->

<!-- UTSJSON.UTSAndroid.onAppActivityResult.param -->

<!-- UTSJSON.UTSAndroid.onAppActivityResult.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppActivityResult.compatibility -->

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

杜庆泉's avatar
杜庆泉 已提交
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
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{
		// 别的代码发起的请求,不要处理
	}

});
```
杜庆泉's avatar
杜庆泉 已提交
201

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

杜庆泉's avatar
杜庆泉 已提交
203
### offAppActivityResult
D
DCloud_LXH 已提交
204 205 206 207 208 209 210 211 212

<!-- UTSJSON.UTSAndroid.offAppActivityResult.description -->

<!-- UTSJSON.UTSAndroid.offAppActivityResult.param -->

<!-- UTSJSON.UTSAndroid.offAppActivityResult.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppActivityResult.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
213 214 215 216 217 218 219 220
```ts
// 移除全部监听
UTSAndroid.offAppActivityResult();
// 移除指定监听
UTSAndroid.offAppActivityResult(() => {
});
```

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

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

杜庆泉's avatar
杜庆泉 已提交
223
### onAppActivityBack
D
DCloud_LXH 已提交
224 225 226 227 228 229 230 231 232

<!-- UTSJSON.UTSAndroid.onAppActivityBack.description -->

<!-- UTSJSON.UTSAndroid.onAppActivityBack.param -->

<!-- UTSJSON.UTSAndroid.onAppActivityBack.returnValue -->

<!-- UTSJSON.UTSAndroid.onAppActivityBack.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
233 234 235 236 237 238 239
```ts
UTSAndroid.onAppActivityBack(() => {
     let eventName = "onAppActivityBack- " + Date.now();
     console.log(eventName);
});

```
杜庆泉's avatar
杜庆泉 已提交
240

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

杜庆泉's avatar
杜庆泉 已提交
242
### offAppActivityBack
D
DCloud_LXH 已提交
243 244 245 246 247 248 249 250 251

<!-- UTSJSON.UTSAndroid.offAppActivityBack.description -->

<!-- UTSJSON.UTSAndroid.offAppActivityBack.param -->

<!-- UTSJSON.UTSAndroid.offAppActivityBack.returnValue -->

<!-- UTSJSON.UTSAndroid.offAppActivityBack.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
252 253 254 255 256 257 258
```ts
// 移除全部监听
UTSAndroid.offAppActivityBack();
// 移除指定监听
UTSAndroid.offAppActivityBack(() => {
});
```
杜庆泉's avatar
杜庆泉 已提交
259

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

D
DCloud_LXH 已提交
261 262 263 264
### getAppContext()

<!-- UTSJSON.UTSAndroid.getAppContext.description -->

265 266
> HBuilderX4.31及以上版本推荐使用 [getApp().getAndroidApplication()](../api/get-app.md#getandroidapplication) 获取android原生 [Application](https://developer.android.google.cn/reference/android/app/Application)。

D
DCloud_LXH 已提交
267 268 269 270 271 272
<!-- UTSJSON.UTSAndroid.getAppContext.param -->

<!-- UTSJSON.UTSAndroid.getAppContext.returnValue -->

<!-- UTSJSON.UTSAndroid.getAppContext.compatibility -->

273 274
<!-- UTSJSON.UTSAndroid.getAppContext.tutorial -->

杜庆泉's avatar
杜庆泉 已提交
275 276 277 278 279
```uts
let packageName = UTSAndroid.getAppContext()?.packageName
console.log("packageName",packageName)
```

D
DCloud_LXH 已提交
280 281 282 283
### getUniActivity()

<!-- UTSJSON.UTSAndroid.getUniActivity.description -->

284 285
> 在uvue页面中也可先通过 [uni.getElementById](../api/get-element-by-id.md) 获取节点元素对象 [UniElement](../dom/unielement.md),在调用其 [getAndroidActivity](../dom/unielement.md#getandroidactivity) 获取android原生 [Activity](https://developer.android.google.cn/reference/android/app/Activity)。

D
DCloud_LXH 已提交
286 287 288 289 290 291
<!-- UTSJSON.UTSAndroid.getUniActivity.param -->

<!-- UTSJSON.UTSAndroid.getUniActivity.returnValue -->

<!-- UTSJSON.UTSAndroid.getUniActivity.compatibility -->

292 293
<!-- UTSJSON.UTSAndroid.getUniActivity.tutorial -->

杜庆泉's avatar
杜庆泉 已提交
294 295 296 297 298 299 300 301
```uts
// 获取第一个可以响应图像采集行为组件
let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(UTSAndroid.getUniActivity()!.getPackageManager()) != null) {
	UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 1001);
}
```

杜庆泉's avatar
杜庆泉 已提交
302
### getResourcePath(resourceName:string)
D
DCloud_LXH 已提交
303 304 305 306 307 308 309 310 311

<!-- UTSJSON.UTSAndroid.getResourcePath.description -->

<!-- UTSJSON.UTSAndroid.getResourcePath.param -->

<!-- UTSJSON.UTSAndroid.getResourcePath.returnValue -->

<!-- UTSJSON.UTSAndroid.getResourcePath.compatibility -->

D
DCloud_LXH 已提交
312
::: warning 注意事项
杜庆泉's avatar
杜庆泉 已提交
313 314 315

`getResourcePath`[convert2AbsFullPath](https://doc.dcloud.net.cn/uni-app-x/uts/utsandroid.html#convert2absfullpath-path-string) 区别在于:

杜庆泉's avatar
杜庆泉 已提交
316
`getResourcePath` 屏蔽了读取`代码包文件`时 各平台/各模式下的底层细节,即使是存放在`asset`目录也会返回符合android 读取规范的协议地址
杜庆泉's avatar
杜庆泉 已提交
317

杜庆泉's avatar
杜庆泉 已提交
318
`convert2AbsFullPath` 没有实现这一点
杜庆泉's avatar
杜庆泉 已提交
319 320 321 322

当开发者需要读取`代码包文件`时,建议使用 `getResourcePath`


D
DCloud_LXH 已提交
323
- [代码包文件](../api/file-system-spec.md#package)
杜庆泉's avatar
杜庆泉 已提交
324 325
  - `代码包文件``真机运行``云打包`模式下的释放策略不同:\
  	本地真机运行:会被存在放内置储存目录\
杜庆泉's avatar
杜庆泉 已提交
326
  	云打包: `uni-app x`项目会被存放在`asset`目录, `uni-app` 项目默认会被存放在内置储存目录\
D
DCloud_LXH 已提交
327 328 329 330 331 332 333
  	因此 `uni-app`/`uni-app x` 平台对 `代码包文件` 均仅支持读取操作
- [本地磁盘文件](../api/file-system-spec.md#disk)
	- [沙盒文件](../api/file-system-spec.md#internalsandbox)
		- 不支持
	- [沙盒外文件](../api/file-system-spec.md#%E6%B2%99%E7%9B%92%E5%A4%96%E7%9B%AE%E5%BD%95)
		- 不支持
:::
杜庆泉's avatar
杜庆泉 已提交
334

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

杜庆泉's avatar
杜庆泉 已提交
336
```ts
杜庆泉's avatar
杜庆泉 已提交
337 338
/**
 * 代码包文件在真机运行模式下:
D
DCloud_LXH 已提交
339
 * /storage/emulated/0/Android/data/io.dcloud.uniappx/apps/__UNI__XXXXXXX/www/static/logo.png
杜庆泉's avatar
杜庆泉 已提交
340 341 342
 * 代码包文件在云打包模式下:
 * file:///android_asset/apps/__UNI__XXXXXXX/www/static/logo.png
 * /
杜庆泉's avatar
杜庆泉 已提交
343
console.log(UTSAndroid.getResourcePath('static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
344
// 沙盒文件,不支持,会返回不存在的路径
杜庆泉's avatar
杜庆泉 已提交
345
console.log(UTSAndroid.getResourcePath('unifile://sandbox/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
346
// 沙盒外文件,不支持,会返回不存在的路径
杜庆泉's avatar
杜庆泉 已提交
347
console.log(UTSAndroid.getResourcePath('/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/www/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
348 349 350 351 352
```




杜庆泉's avatar
杜庆泉 已提交
353
### getDispatcher
D
DCloud_LXH 已提交
354 355 356 357 358 359 360 361 362

<!-- UTSJSON.UTSAndroid.getDispatcher.description -->

<!-- UTSJSON.UTSAndroid.getDispatcher.param -->

<!-- UTSJSON.UTSAndroid.getDispatcher.returnValue -->

<!-- UTSJSON.UTSAndroid.getDispatcher.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380

```uts
// 不传任何参数,得到是当前代码运行线程
let currentDispatcher = UTSAndroid.getDispatcher()
console.log("currentDispatcher",currentDispatcher)
// 期望在 io 任务队列执行
UTSAndroid.getDispatcher("io").async(function(_){
    console.log("当前任务执行在",Thread.currentThread().getName())
    // 期望在 主线程 任务队列执行
    UTSAndroid.getDispatcher("main").async(function(_){
        console.log("当前任务执行在",Thread.currentThread().getName())
        currentDispatcher.async(function(_){
            console.log("起始任务执行在",Thread.currentThread().getName())
        },null)
    },null)
},null)
```

DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
381

D
DCloud_LXH 已提交
382 383 384 385 386 387 388 389 390 391
### devicePX2px(devicePX:number) : number;

<!-- UTSJSON.UTSAndroid.devicePX2px.description -->

<!-- UTSJSON.UTSAndroid.devicePX2px.param -->

<!-- UTSJSON.UTSAndroid.devicePX2px.returnValue -->

<!-- UTSJSON.UTSAndroid.devicePX2px.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
392 393 394 395 396 397
```ts
// 对 100物理像素长度 进行转换
let pagePX = UTSAndroid.devicePX2px(100)
// 在特定设备返回值:36.3636360168457
console.log("pagePX",pagePX)
```
D
DCloud_LXH 已提交
398 399 400 401 402

### isPrivacyAgree() : boolean;

<!-- UTSJSON.UTSAndroid.isPrivacyAgree.description -->

403 404
> HBuilderX4.31及以上版本推荐使用 [uni.getPrivacySetting](../api/privacy.md#getprivacysetting) 获取用户是否同意隐私协议。

D
DCloud_LXH 已提交
405 406 407 408 409 410
<!-- UTSJSON.UTSAndroid.isPrivacyAgree.param -->

<!-- UTSJSON.UTSAndroid.isPrivacyAgree.returnValue -->

<!-- UTSJSON.UTSAndroid.isPrivacyAgree.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
411 412 413 414 415 416 417 418 419 420 421 422
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```


D
DCloud_LXH 已提交
423 424 425 426 427

### setPrivacyAgree(state:boolean):void;

<!-- UTSJSON.UTSAndroid.setPrivacyAgree.description -->

428 429
> HBuilderX4.31及以上版本推荐使用 [button](../component/button.md) 设置 `open-type` 值为 `agreePrivacyAuthorization` 来实现设置用户同意隐私协议。

D
DCloud_LXH 已提交
430 431 432 433 434 435
<!-- UTSJSON.UTSAndroid.setPrivacyAgree.param -->

<!-- UTSJSON.UTSAndroid.setPrivacyAgree.returnValue -->

<!-- UTSJSON.UTSAndroid.setPrivacyAgree.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
436 437 438 439 440 441 442 443 444 445 446 447
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```


D
DCloud_LXH 已提交
448 449 450 451
### resetPrivacyAgree():void;

<!-- UTSJSON.UTSAndroid.resetPrivacyAgree.description -->

452 453
> HBuilderX4.31及以上版本推荐使用 [uni.resetPrivacyAuthorization](../api/privacy.md#resetprivacyauthorization) 重置隐私协议状态为未同意。

D
DCloud_LXH 已提交
454 455 456 457 458 459
<!-- UTSJSON.UTSAndroid.resetPrivacyAgree.param -->

<!-- UTSJSON.UTSAndroid.resetPrivacyAgree.returnValue -->

<!-- UTSJSON.UTSAndroid.resetPrivacyAgree.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
460 461 462 463 464 465 466 467 468 469 470
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```

杜庆泉's avatar
杜庆泉 已提交
471
### requestSystemPermission
D
DCloud_LXH 已提交
472 473 474 475 476 477 478 479 480

<!-- UTSJSON.UTSAndroid.requestSystemPermission.description -->

<!-- UTSJSON.UTSAndroid.requestSystemPermission.param -->

<!-- UTSJSON.UTSAndroid.requestSystemPermission.returnValue -->

<!-- UTSJSON.UTSAndroid.requestSystemPermission.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
481 482 483
```uts

	let permissionNeed = ["android.permission.CAMERA"]
杜庆泉's avatar
杜庆泉 已提交
484
    // 请求拍照权限
杜庆泉's avatar
杜庆泉 已提交
485 486
	UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight : boolean, _ : string[]) {
		if (allRight) {
D
DCloud_LXH 已提交
487
			// 权限请求成功
杜庆泉's avatar
杜庆泉 已提交
488
		} else {
杜庆泉's avatar
杜庆泉 已提交
489
			//用户拒绝了部分权限
杜庆泉's avatar
杜庆泉 已提交
490 491
		}
	}, function (_ : boolean, _ : string[]) {
杜庆泉's avatar
杜庆泉 已提交
492
		//用户拒绝了部分权限
杜庆泉's avatar
杜庆泉 已提交
493 494 495
	})

```
D
DCloud_LXH 已提交
496

杜庆泉's avatar
杜庆泉 已提交
497 498 499 500 501 502 503 504 505
请求权限后有三种情况:

+ 用户允许了全部权限请求,会通过 `success`回调通知调用者,并且此时`allRight`参数为 `true`

+ 用户拒绝了全部权限请求,会通过 `fail` 回调通知调用者,`doNotAskAgain` 参数标识了用户拒绝时是否选择了`不再询问`

+ 用户允许了部分请求,拒绝了部分权限请求,此时既会调用`success`也会调用`fail`。由其中的 string数组参数 标识具体被拒绝/允许的权限


杜庆泉's avatar
杜庆泉 已提交
506
### checkSystemPermissionGranted
D
DCloud_LXH 已提交
507 508 509 510 511 512 513 514 515

<!-- UTSJSON.UTSAndroid.checkSystemPermissionGranted.description -->

<!-- UTSJSON.UTSAndroid.checkSystemPermissionGranted.param -->

<!-- UTSJSON.UTSAndroid.checkSystemPermissionGranted.returnValue -->

<!-- UTSJSON.UTSAndroid.checkSystemPermissionGranted.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
516 517 518 519 520 521 522 523 524
```uts
let permissionCheck = ["android.permission.CAMERA"]
// 请求拍照权限
if (UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!, permissionCheck)) {
	console.log("当前已具备指定权限")
}else{
	console.log("当前不具备指定权限")
}
```
D
DCloud_LXH 已提交
525 526


杜庆泉's avatar
杜庆泉 已提交
527
### gotoSystemPermissionActivity
D
DCloud_LXH 已提交
528 529 530 531 532 533 534 535 536

<!-- UTSJSON.UTSAndroid.gotoSystemPermissionActivity.description -->

<!-- UTSJSON.UTSAndroid.gotoSystemPermissionActivity.param -->

<!-- UTSJSON.UTSAndroid.gotoSystemPermissionActivity.returnValue -->

<!-- UTSJSON.UTSAndroid.gotoSystemPermissionActivity.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
537 538 539 540 541 542
```ts
// 前往系统权限设置界面
let permissionNeed = ["android.permission.READ_PHONE_STATE"]
UTSAndroid.gotoSystemPermissionActivity(UTSAndroid.getUniActivity()!,permissionNeed)
```

D
DCloud_LXH 已提交
543

杜庆泉's avatar
杜庆泉 已提交
544
### getSystemPermissionDenied
D
DCloud_LXH 已提交
545 546 547 548 549 550 551 552 553 554

<!-- UTSJSON.UTSAndroid.getSystemPermissionDenied.description -->

<!-- UTSJSON.UTSAndroid.getSystemPermissionDenied.param -->

<!-- UTSJSON.UTSAndroid.getSystemPermissionDenied.returnValue -->

<!-- UTSJSON.UTSAndroid.getSystemPermissionDenied.compatibility -->


杜庆泉's avatar
杜庆泉 已提交
555
```ts
杜庆泉's avatar
杜庆泉 已提交
556 557 558 559 560 561
	let permissionNeed = ["android.permission.READ_PHONE_STATE"]
	if (UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
    	console.log("当前已具备指定权限")
	}
```

杜庆泉's avatar
杜庆泉 已提交
562
### convert2AbsFullPath(path:string)
D
DCloud_LXH 已提交
563 564 565 566 567 568 569 570 571

<!-- UTSJSON.UTSAndroid.convert2AbsFullPath.description -->

<!-- UTSJSON.UTSAndroid.convert2AbsFullPath.param -->

<!-- UTSJSON.UTSAndroid.convert2AbsFullPath.returnValue -->

<!-- UTSJSON.UTSAndroid.convert2AbsFullPath.compatibility -->

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

D
DCloud_LXH 已提交
573
::: warning 注意事项
杜庆泉's avatar
杜庆泉 已提交
574 575 576

`convert2AbsFullPath`[getResourcePath](https://doc.dcloud.net.cn/uni-app-x/uts/utsandroid.html#getresourcepath) 区别在于:

杜庆泉's avatar
杜庆泉 已提交
577
`convert2AbsFullPath` 对文件路径支持范围更大,不仅支持 `代码包文件`内置储存目录的情况,还支持相对路径,沙盒路径,沙盒外路径(包括系统API返回的文件地址) 等形式。
杜庆泉's avatar
杜庆泉 已提交
578

杜庆泉's avatar
杜庆泉 已提交
579
`getResourcePath` 不支持这些
杜庆泉's avatar
杜庆泉 已提交
580

杜庆泉's avatar
杜庆泉 已提交
581 582 583
当开发者明确需要操作文件,而非代码包资源时,建议使用 `convert2AbsFullPath`


D
DCloud_LXH 已提交
584
- [代码包文件](../api/file-system-spec.md#package)
杜庆泉's avatar
杜庆泉 已提交
585 586 587
  - `代码包文件``真机运行``云打包`模式下的释放策略不同:\
  	本地真机运行:会被存在放内置储存目录\
  	云打包: `uni-app x`项目会被存放在`asset`目录, `uni-app` 项目会被存放在内置储存目录\
D
DCloud_LXH 已提交
588 589 590 591 592 593 594
  	因此在 `uni-app`/`uni-app x` 平台对 `代码包文件` 均仅支持读取操作
- [本地磁盘文件](../api/file-system-spec.md#disk)
	- [沙盒文件](../api/file-system-spec.md#internalsandbox)
		- `uni-app x`支持读写
		- `uni-app`不支持
	- [沙盒外文件](../api/file-system-spec.md#%E6%B2%99%E7%9B%92%E5%A4%96%E7%9B%AE%E5%BD%95)
		- 沙盒管理范围外的其他文件。 调用系统API返回的绝对地址属于此类。`uni-app`/`uni-app x`平台 均支持读写
D
DCloud_LXH 已提交
595

D
DCloud_LXH 已提交
596
:::
杜庆泉's avatar
杜庆泉 已提交
597 598

```ts
杜庆泉's avatar
杜庆泉 已提交
599
// 代码包文件
杜庆泉's avatar
杜庆泉 已提交
600
console.log(UTSAndroid.convert2AbsFullPath('static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
601
// 沙盒文件
杜庆泉's avatar
杜庆泉 已提交
602
console.log(UTSAndroid.convert2AbsFullPath('unifile://sandbox/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
603 604
// 沙盒外文件 包含相对路径
console.log(UTSAndroid.convert2AbsFullPath('../../../io.dcloud.HBuilder/apps/HBuilder/www/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
605 606 607 608 609
```




杜庆泉's avatar
杜庆泉 已提交
610
### getFileProviderUri(file:File)
D
DCloud_LXH 已提交
611 612 613 614 615 616 617 618 619

<!-- UTSJSON.UTSAndroid.getFileProviderUri.description -->

<!-- UTSJSON.UTSAndroid.getFileProviderUri.param -->

<!-- UTSJSON.UTSAndroid.getFileProviderUri.returnValue -->

<!-- UTSJSON.UTSAndroid.getFileProviderUri.compatibility -->

D
DCloud_LXH 已提交
620 621 622 623 624 625 626 627 628 629 630
```ts
// 使用外部应用打开项目内置图片资源
let file = new File(UTSAndroid.getResourcePath("static/logo.png"))
const uri = UTSAndroid.getFileProviderUri(file)
const intent = new Intent(Intent.ACTION_VIEW, uri)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
const context = UTSAndroid.getUniActivity()!;
context.startActivity(intent);

```

D
DCloud_LXH 已提交
631

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

杜庆泉's avatar
杜庆泉 已提交
633
### getJavaClass(input:any)
D
DCloud_LXH 已提交
634 635 636 637 638 639 640 641

<!-- UTSJSON.UTSAndroid.getJavaClass.description -->

<!-- UTSJSON.UTSAndroid.getJavaClass.param -->

<!-- UTSJSON.UTSAndroid.getJavaClass.returnValue -->

<!-- UTSJSON.UTSAndroid.getJavaClass.compatibility -->
杜庆泉's avatar
杜庆泉 已提交
642

杜庆泉's avatar
杜庆泉 已提交
643 644 645 646 647 648 649 650 651 652 653 654 655 656
```uts
export function getJavaClassTest() : boolean {
	let dispatcherClass = UTSAndroid.getJavaClass(UTSAndroid.getDispatcher())
	if("io.dcloud.uts.task.UTSTaskDispatcher" == dispatcherClass.name){
    	return true
	}
  	let applicationClass = UTSAndroid.getJavaClass(UTSAndroid.getAppContext()!)
  	if("io.dcloud.uniapp.UniApplication" == applicationClass.name){
    	return true
  	}
	return false
}
```

杜庆泉's avatar
杜庆泉 已提交
657
### getTopPageActivity()
杜庆泉's avatar
杜庆泉 已提交
658 659 660 661 662 663 664 665

<!-- UTSJSON.UTSAndroid.getTopPageActivity.description -->

<!-- UTSJSON.UTSAndroid.getTopPageActivity.param -->

<!-- UTSJSON.UTSAndroid.getTopPageActivity.returnValue -->

<!-- UTSJSON.UTSAndroid.getTopPageActivity.compatibility -->
杜庆泉's avatar
杜庆泉 已提交
666

杜庆泉's avatar
杜庆泉 已提交
667 668 669 670 671
```ts
// 获取当前栈顶activity
console.log(UTSAndroid.getTopPageActivity())
```

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
672
### onActivityCallback(callback, pageRoute?)
M
mahaifeng 已提交
673

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
674
<!-- UTSJSON.UTSAndroid.onActivityCallback.description -->
M
mahaifeng 已提交
675

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
676
<!-- UTSJSON.UTSAndroid.onActivityCallback.param -->
M
mahaifeng 已提交
677

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
678
<!-- UTSJSON.UTSAndroid.onActivityCallback.returnValue -->
M
mahaifeng 已提交
679

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
680
<!-- UTSJSON.UTSAndroid.onActivityCallback.compatibility -->
M
mahaifeng 已提交
681

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
682
### offActivityCallback(callback)
M
mahaifeng 已提交
683

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
684
<!-- UTSJSON.UTSAndroid.offActivityCallback.description -->
M
mahaifeng 已提交
685

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
686
<!-- UTSJSON.UTSAndroid.offActivityCallback.param -->
M
mahaifeng 已提交
687

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
688
<!-- UTSJSON.UTSAndroid.offActivityCallback.returnValue -->
M
mahaifeng 已提交
689

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
690
<!-- UTSJSON.UTSAndroid.offActivityCallback.compatibility -->
M
mahaifeng 已提交
691

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
692
### onPrivacyAgreeChange(callback)
M
mahaifeng 已提交
693

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
694
<!-- UTSJSON.UTSAndroid.onPrivacyAgreeChange.description -->
M
mahaifeng 已提交
695

696 697
> HBuilderX4.31及以上版本推荐使用 [uni.onPrivacyAuthorizationChange](../api/privacy.md#onprivacyauthorizationchange) 监听隐私协议状态的变化。

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
698
<!-- UTSJSON.UTSAndroid.onPrivacyAgreeChange.param -->
M
mahaifeng 已提交
699

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
700
<!-- UTSJSON.UTSAndroid.onPrivacyAgreeChange.returnValue -->
M
mahaifeng 已提交
701

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
702
<!-- UTSJSON.UTSAndroid.onPrivacyAgreeChange.compatibility -->
M
mahaifeng 已提交
703

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
704
### offPrivacyAgreeChange(callback)
M
mahaifeng 已提交
705

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
706
<!-- UTSJSON.UTSAndroid.offPrivacyAgreeChange.description -->
M
mahaifeng 已提交
707

708 709
> HBuilderX4.31及以上版本推荐使用 [uni.offPrivacyAuthorizationChange](../api/privacy.md#offprivacyauthorizationchange) 取消监听隐私协议状态的变化。

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
710
<!-- UTSJSON.UTSAndroid.offPrivacyAgreeChange.param -->
M
mahaifeng 已提交
711

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
712
<!-- UTSJSON.UTSAndroid.offPrivacyAgreeChange.returnValue -->
M
mahaifeng 已提交
713

杜庆泉's avatar
杜庆泉 已提交
714 715
<!-- UTSJSON.UTSAndroid.offPrivacyAgreeChange.compatibility -->

杜庆泉's avatar
杜庆泉 已提交
716 717


D
DCloud_LXH 已提交
718
### getGenericType\<T>(): Type
杜庆泉's avatar
杜庆泉 已提交
719 720 721 722 723 724 725 726 727

<!-- UTSJSON.UTSAndroid.getGenericType.description -->

<!-- UTSJSON.UTSAndroid.getGenericType.param -->

<!-- UTSJSON.UTSAndroid.getGenericType.returnValue -->

<!-- UTSJSON.UTSAndroid.getGenericType.compatibility -->

D
DCloud_LXH 已提交
728
### getGenericClassName\<T>(): string
杜庆泉's avatar
杜庆泉 已提交
729 730 731 732 733 734 735 736 737 738 739

<!-- UTSJSON.UTSAndroid.getGenericClassName.description -->

<!-- UTSJSON.UTSAndroid.getGenericClassName.param -->

<!-- UTSJSON.UTSAndroid.getGenericClassName.returnValue -->

<!-- UTSJSON.UTSAndroid.getGenericClassName.compatibility -->



杜庆泉's avatar
杜庆泉 已提交
740
<!-- UTSJSON.UTSAndroid.tutorial -->