utsandroid.md 18.4 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

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

杜庆泉's avatar
杜庆泉 已提交
67
### offAppActivityPause
D
DCloud_LXH 已提交
68 69 70 71 72 73 74 75 76

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
77 78


杜庆泉's avatar
杜庆泉 已提交
79
### onAppActivityResume
D
DCloud_LXH 已提交
80 81 82 83 84 85 86 87 88

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
90
### offAppActivityResume
D
DCloud_LXH 已提交
91 92 93 94 95 96 97 98 99

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
102
### onAppActivityDestroy
D
DCloud_LXH 已提交
103 104 105 106 107 108 109 110 111

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

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

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

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

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

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

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

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
126
### onAppActivityResult
D
DCloud_LXH 已提交
127 128 129 130 131 132 133 134 135

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

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
139
### offAppActivityResult
D
DCloud_LXH 已提交
140 141 142 143 144 145 146 147 148

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

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

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

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

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

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

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

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
163
### offAppActivityBack
D
DCloud_LXH 已提交
164 165 166 167 168 169 170 171 172

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

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

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

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

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

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

D
DCloud_LXH 已提交
175 176 177 178 179 180 181 182 183 184
### getAppContext()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
185 186 187 188 189
```uts
let packageName = UTSAndroid.getAppContext()?.packageName
console.log("packageName",packageName)
```

D
DCloud_LXH 已提交
190 191 192 193 194 195 196 197 198 199
### getUniActivity()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
200 201 202 203 204 205 206 207
```uts
// 获取第一个可以响应图像采集行为组件
let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(UTSAndroid.getUniActivity()!.getPackageManager()) != null) {
	UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 1001);
}
```

杜庆泉's avatar
杜庆泉 已提交
208
### getResourcePath(resourceName:string)
D
DCloud_LXH 已提交
209 210 211 212 213 214 215 216 217

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

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

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

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

D
DCloud_LXH 已提交
218
::: warning 注意事项
杜庆泉's avatar
杜庆泉 已提交
219 220 221

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

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

杜庆泉's avatar
杜庆泉 已提交
224
`convert2AbsFullPath` 没有实现这一点
杜庆泉's avatar
杜庆泉 已提交
225 226 227 228

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


D
DCloud_LXH 已提交
229
- [代码包文件](../api/file-system-spec.md#package)
杜庆泉's avatar
杜庆泉 已提交
230 231
  - `代码包文件``真机运行``云打包`模式下的释放策略不同:\
  	本地真机运行:会被存在放内置储存目录\
杜庆泉's avatar
杜庆泉 已提交
232
  	云打包: `uni-app x`项目会被存放在`asset`目录, `uni-app` 项目默认会被存放在内置储存目录\
D
DCloud_LXH 已提交
233 234 235 236 237 238 239
  	因此 `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
杜庆泉 已提交
240

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

杜庆泉's avatar
杜庆泉 已提交
242
```ts
杜庆泉's avatar
杜庆泉 已提交
243
// 代码包文件
杜庆泉's avatar
杜庆泉 已提交
244
console.log(UTSAndroid.getResourcePath('static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
245
// 沙盒文件
杜庆泉's avatar
杜庆泉 已提交
246
console.log(UTSAndroid.getResourcePath('unifile://sandbox/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
247 248
// 沙盒外文件
console.log(UTSAndroid.getResourcePath('/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/www/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
249 250 251 252 253
```




D
DCloud_LXH 已提交
254 255 256 257 258 259 260 261 262 263
### exit()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
264 265 266 267 268
```ts
// 退出当前应用
UTSAndroid.exit()
```

杜庆泉's avatar
杜庆泉 已提交
269
### getDispatcher
D
DCloud_LXH 已提交
270 271 272 273 274 275 276 277 278

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296

```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)
```

D
DCloud_LXH 已提交
297 298 299 300 301 302 303 304 305 306
### getAppId()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
307 308 309 310 311
```uts
let appid = UTSAndroid.getAppId()
console.log("appid",appid)
```

D
DCloud_LXH 已提交
312 313 314 315 316 317 318 319 320 321
### getOsTheme()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
322 323 324 325 326
```uts
let theme = UTSAndroid.getOsTheme()
console.log("OsTheme",theme)
```

D
DCloud_LXH 已提交
327 328 329 330 331 332 333 334 335 336
### isUniMp()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
337 338 339 340 341
```uts
let isUniMp = UTSAndroid.isUniMp()
console.log("isUniMp",isUniMp)
```

D
DCloud_LXH 已提交
342 343 344 345 346 347 348 349 350 351
### getAppName()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
352 353 354 355 356
```uts
let appName = UTSAndroid.getAppName()
console.log("AppName",appName)
```

D
DCloud_LXH 已提交
357 358 359 360 361 362 363 364 365 366
### getAppVersion()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
367 368 369 370 371
```uts
let appVersion = UTSAndroid.getAppVersion()
console.log("AppVersion",appVersion)
```

D
DCloud_LXH 已提交
372 373 374 375 376 377 378 379 380 381
### getInnerVersion()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
382 383 384 385 386
```uts
let innerVersion = UTSAndroid.getInnerVersion()
console.log("InnerVersion",innerVersion)
```

D
DCloud_LXH 已提交
387 388 389 390 391 392 393 394 395 396
### isUniAppX()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
397 398 399 400
```uts
let isUniAppX = UTSAndroid.isUniAppX()
console.log("isUniAppX",isUniAppX)
```
杜庆泉's avatar
杜庆泉 已提交
401

杜庆泉's avatar
杜庆泉 已提交
402
### getAppCachePath()
杜庆泉's avatar
杜庆泉 已提交
403 404 405 406 407 408 409 410 411

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
414 415 416 417 418 419
```uts
let appCachePath = UTSAndroid.getAppCachePath()
console.log("AppCachePath",appCachePath)
```


D
DCloud_LXH 已提交
420 421 422 423 424 425 426 427 428 429
### rpx2px(rpx:number) : number;

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

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

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

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

DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
430 431
推荐使用uni.rpx2px来替代本API,[详见](https://doc.dcloud.net.cn/uni-app-x/api/rpx2px.html)

D
DCloud_LXH 已提交
432 433 434 435 436 437 438 439 440 441
### devicePX2px(devicePX:number) : number;

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
442 443 444 445 446 447
```ts
// 对 100物理像素长度 进行转换
let pagePX = UTSAndroid.devicePX2px(100)
// 在特定设备返回值:36.3636360168457
console.log("pagePX",pagePX)
```
D
DCloud_LXH 已提交
448 449 450 451 452 453 454 455 456 457 458

### isPrivacyAgree() : boolean;

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
459 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())
```


D
DCloud_LXH 已提交
471 472 473 474 475 476 477 478 479 480 481

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
482 483 484 485 486 487 488 489 490 491 492 493
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```


D
DCloud_LXH 已提交
494 495 496 497 498 499 500 501 502 503
### resetPrivacyAgree():void;

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
504 505 506 507 508 509 510 511 512 513 514
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```

杜庆泉's avatar
杜庆泉 已提交
515
### requestSystemPermission
D
DCloud_LXH 已提交
516 517 518 519 520 521 522 523 524

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
525 526 527
```uts

	let permissionNeed = ["android.permission.CAMERA"]
杜庆泉's avatar
杜庆泉 已提交
528
    // 请求拍照权限
杜庆泉's avatar
杜庆泉 已提交
529 530
	UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight : boolean, _ : string[]) {
		if (allRight) {
D
DCloud_LXH 已提交
531
			// 权限请求成功
杜庆泉's avatar
杜庆泉 已提交
532
		} else {
杜庆泉's avatar
杜庆泉 已提交
533
			//用户拒绝了部分权限
杜庆泉's avatar
杜庆泉 已提交
534 535
		}
	}, function (_ : boolean, _ : string[]) {
杜庆泉's avatar
杜庆泉 已提交
536
		//用户拒绝了部分权限
杜庆泉's avatar
杜庆泉 已提交
537 538 539
	})

```
D
DCloud_LXH 已提交
540

杜庆泉's avatar
杜庆泉 已提交
541 542 543 544 545 546 547 548 549
请求权限后有三种情况:

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

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

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


杜庆泉's avatar
杜庆泉 已提交
550
### checkSystemPermissionGranted
D
DCloud_LXH 已提交
551 552 553 554 555 556 557 558 559

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
560 561 562 563 564 565 566 567 568
```uts
let permissionCheck = ["android.permission.CAMERA"]
// 请求拍照权限
if (UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!, permissionCheck)) {
	console.log("当前已具备指定权限")
}else{
	console.log("当前不具备指定权限")
}
```
D
DCloud_LXH 已提交
569 570


杜庆泉's avatar
杜庆泉 已提交
571
### gotoSystemPermissionActivity
D
DCloud_LXH 已提交
572 573 574 575 576 577 578 579 580

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
581 582 583 584 585 586
```ts
// 前往系统权限设置界面
let permissionNeed = ["android.permission.READ_PHONE_STATE"]
UTSAndroid.gotoSystemPermissionActivity(UTSAndroid.getUniActivity()!,permissionNeed)
```

D
DCloud_LXH 已提交
587

杜庆泉's avatar
杜庆泉 已提交
588
### getSystemPermissionDenied
D
DCloud_LXH 已提交
589 590 591 592 593 594 595 596 597 598

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

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

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

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


杜庆泉's avatar
杜庆泉 已提交
599
```ts
杜庆泉's avatar
杜庆泉 已提交
600 601 602 603 604 605
	let permissionNeed = ["android.permission.READ_PHONE_STATE"]
	if (UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
    	console.log("当前已具备指定权限")
	}
```

杜庆泉's avatar
杜庆泉 已提交
606
### convert2AbsFullPath(path:string)
D
DCloud_LXH 已提交
607 608 609 610 611 612 613 614 615

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

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

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

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

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

D
DCloud_LXH 已提交
617
::: warning 注意事项
杜庆泉's avatar
杜庆泉 已提交
618 619 620

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

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

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

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


D
DCloud_LXH 已提交
628
- [代码包文件](../api/file-system-spec.md#package)
杜庆泉's avatar
杜庆泉 已提交
629 630 631
  - `代码包文件``真机运行``云打包`模式下的释放策略不同:\
  	本地真机运行:会被存在放内置储存目录\
  	云打包: `uni-app x`项目会被存放在`asset`目录, `uni-app` 项目会被存放在内置储存目录\
D
DCloud_LXH 已提交
632 633 634 635 636 637 638
  	因此在 `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`平台 均支持读写
杜庆泉's avatar
杜庆泉 已提交
639
		
D
DCloud_LXH 已提交
640
:::
杜庆泉's avatar
杜庆泉 已提交
641 642

```ts
杜庆泉's avatar
杜庆泉 已提交
643
// 代码包文件
杜庆泉's avatar
杜庆泉 已提交
644
console.log(UTSAndroid.convert2AbsFullPath('static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
645
// 沙盒文件
杜庆泉's avatar
杜庆泉 已提交
646
console.log(UTSAndroid.convert2AbsFullPath('unifile://sandbox/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
647 648
// 沙盒外文件 包含相对路径
console.log(UTSAndroid.convert2AbsFullPath('../../../io.dcloud.HBuilder/apps/HBuilder/www/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
649 650 651 652 653
```




杜庆泉's avatar
杜庆泉 已提交
654
### getFileProviderUri(file:File)
D
DCloud_LXH 已提交
655 656 657 658 659 660 661 662 663

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

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

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

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

D
DCloud_LXH 已提交
664 665 666 667 668 669 670 671 672 673 674
```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 已提交
675

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

杜庆泉's avatar
杜庆泉 已提交
677
### getJavaClass(input:any)
D
DCloud_LXH 已提交
678 679 680 681 682 683 684 685

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
687 688 689 690 691 692 693 694 695 696 697 698 699 700
```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
杜庆泉 已提交
701
### getTopPageActivity()
杜庆泉's avatar
杜庆泉 已提交
702 703 704 705 706 707 708 709

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
711 712 713 714 715
```ts
// 获取当前栈顶activity
console.log(UTSAndroid.getTopPageActivity())
```

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

<!-- UTSJSON.UTSAndroid.tutorial -->