utsandroid.md 21.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 265 266 267 268 269 270
### getAppContext()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
271 272 273 274 275
```uts
let packageName = UTSAndroid.getAppContext()?.packageName
console.log("packageName",packageName)
```

D
DCloud_LXH 已提交
276 277 278 279 280 281 282 283 284 285
### getUniActivity()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
286 287 288 289 290 291 292 293
```uts
// 获取第一个可以响应图像采集行为组件
let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(UTSAndroid.getUniActivity()!.getPackageManager()) != null) {
	UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 1001);
}
```

杜庆泉's avatar
杜庆泉 已提交
294
### getResourcePath(resourceName:string)
D
DCloud_LXH 已提交
295 296 297 298 299 300 301 302 303

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

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

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

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

D
DCloud_LXH 已提交
304
::: warning 注意事项
杜庆泉's avatar
杜庆泉 已提交
305 306 307

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

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

杜庆泉's avatar
杜庆泉 已提交
310
`convert2AbsFullPath` 没有实现这一点
杜庆泉's avatar
杜庆泉 已提交
311 312 313 314

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


D
DCloud_LXH 已提交
315
- [代码包文件](../api/file-system-spec.md#package)
杜庆泉's avatar
杜庆泉 已提交
316 317
  - `代码包文件``真机运行``云打包`模式下的释放策略不同:\
  	本地真机运行:会被存在放内置储存目录\
杜庆泉's avatar
杜庆泉 已提交
318
  	云打包: `uni-app x`项目会被存放在`asset`目录, `uni-app` 项目默认会被存放在内置储存目录\
D
DCloud_LXH 已提交
319 320 321 322 323 324 325
  	因此 `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
杜庆泉 已提交
326

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

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




D
DCloud_LXH 已提交
345 346 347 348 349 350 351 352 353 354
### exit()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
355 356 357 358 359
```ts
// 退出当前应用
UTSAndroid.exit()
```

杜庆泉's avatar
杜庆泉 已提交
360
### getDispatcher
D
DCloud_LXH 已提交
361 362 363 364 365 366 367 368 369

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387

```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 已提交
388 389 390 391 392 393 394 395 396 397
### getAppId()

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

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

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

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

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

D
DCloud_LXH 已提交
403 404 405 406 407 408 409 410 411 412
### getOsTheme()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
413 414 415 416 417
```uts
let theme = UTSAndroid.getOsTheme()
console.log("OsTheme",theme)
```

D
DCloud_LXH 已提交
418 419 420 421 422 423 424 425 426 427
### isUniMp()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
428 429 430 431 432
```uts
let isUniMp = UTSAndroid.isUniMp()
console.log("isUniMp",isUniMp)
```

D
DCloud_LXH 已提交
433 434 435 436 437 438 439 440 441 442
### getAppName()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
443 444 445 446 447
```uts
let appName = UTSAndroid.getAppName()
console.log("AppName",appName)
```

D
DCloud_LXH 已提交
448 449 450 451 452 453 454 455 456 457
### getAppVersion()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
458 459 460 461 462
```uts
let appVersion = UTSAndroid.getAppVersion()
console.log("AppVersion",appVersion)
```

D
DCloud_LXH 已提交
463 464 465 466 467 468 469 470 471 472
### getInnerVersion()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
473 474 475 476 477
```uts
let innerVersion = UTSAndroid.getInnerVersion()
console.log("InnerVersion",innerVersion)
```

D
DCloud_LXH 已提交
478 479 480 481 482 483 484 485 486 487
### isUniAppX()

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
488 489 490 491
```uts
let isUniAppX = UTSAndroid.isUniAppX()
console.log("isUniAppX",isUniAppX)
```
杜庆泉's avatar
杜庆泉 已提交
492

杜庆泉's avatar
杜庆泉 已提交
493
### getAppCachePath()
杜庆泉's avatar
杜庆泉 已提交
494 495 496 497 498 499 500 501 502

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

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
505 506 507 508 509 510
```uts
let appCachePath = UTSAndroid.getAppCachePath()
console.log("AppCachePath",appCachePath)
```


D
DCloud_LXH 已提交
511 512 513 514 515 516 517 518 519 520
### 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 已提交
521 522
推荐使用uni.rpx2px来替代本API,[详见](https://doc.dcloud.net.cn/uni-app-x/api/rpx2px.html)

D
DCloud_LXH 已提交
523 524 525 526 527 528 529 530 531 532
### devicePX2px(devicePX:number) : number;

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
533 534 535 536 537 538
```ts
// 对 100物理像素长度 进行转换
let pagePX = UTSAndroid.devicePX2px(100)
// 在特定设备返回值:36.3636360168457
console.log("pagePX",pagePX)
```
D
DCloud_LXH 已提交
539 540 541 542 543 544 545 546 547 548 549

### isPrivacyAgree() : boolean;

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
550 551 552 553 554 555 556 557 558 559 560 561
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```


D
DCloud_LXH 已提交
562 563 564 565 566 567 568 569 570 571 572

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

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
573 574 575 576 577 578 579 580 581 582 583 584
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```


D
DCloud_LXH 已提交
585 586 587 588 589 590 591 592 593 594
### resetPrivacyAgree():void;

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
595 596 597 598 599 600 601 602 603 604 605
```ts
// 手动标记用户已同意隐私协议
UTSAndroid.setPrivacyAgree(true)
// 此时为 true
console.log(UTSAndroid.isPrivacyAgree())
// 重置用户隐私协议状态
UTSAndroid.resetPrivacyAgree()
// 此时为 false
console.log(UTSAndroid.isPrivacyAgree())
```

杜庆泉's avatar
杜庆泉 已提交
606
### requestSystemPermission
D
DCloud_LXH 已提交
607 608 609 610 611 612 613 614 615

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
616 617 618
```uts

	let permissionNeed = ["android.permission.CAMERA"]
杜庆泉's avatar
杜庆泉 已提交
619
    // 请求拍照权限
杜庆泉's avatar
杜庆泉 已提交
620 621
	UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight : boolean, _ : string[]) {
		if (allRight) {
D
DCloud_LXH 已提交
622
			// 权限请求成功
杜庆泉's avatar
杜庆泉 已提交
623
		} else {
杜庆泉's avatar
杜庆泉 已提交
624
			//用户拒绝了部分权限
杜庆泉's avatar
杜庆泉 已提交
625 626
		}
	}, function (_ : boolean, _ : string[]) {
杜庆泉's avatar
杜庆泉 已提交
627
		//用户拒绝了部分权限
杜庆泉's avatar
杜庆泉 已提交
628 629 630
	})

```
D
DCloud_LXH 已提交
631

杜庆泉's avatar
杜庆泉 已提交
632 633 634 635 636 637 638 639 640
请求权限后有三种情况:

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

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

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


杜庆泉's avatar
杜庆泉 已提交
641
### checkSystemPermissionGranted
D
DCloud_LXH 已提交
642 643 644 645 646 647 648 649 650

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
651 652 653 654 655 656 657 658 659
```uts
let permissionCheck = ["android.permission.CAMERA"]
// 请求拍照权限
if (UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!, permissionCheck)) {
	console.log("当前已具备指定权限")
}else{
	console.log("当前不具备指定权限")
}
```
D
DCloud_LXH 已提交
660 661


杜庆泉's avatar
杜庆泉 已提交
662
### gotoSystemPermissionActivity
D
DCloud_LXH 已提交
663 664 665 666 667 668 669 670 671

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
672 673 674 675 676 677
```ts
// 前往系统权限设置界面
let permissionNeed = ["android.permission.READ_PHONE_STATE"]
UTSAndroid.gotoSystemPermissionActivity(UTSAndroid.getUniActivity()!,permissionNeed)
```

D
DCloud_LXH 已提交
678

杜庆泉's avatar
杜庆泉 已提交
679
### getSystemPermissionDenied
D
DCloud_LXH 已提交
680 681 682 683 684 685 686 687 688 689

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

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

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

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


杜庆泉's avatar
杜庆泉 已提交
690
```ts
杜庆泉's avatar
杜庆泉 已提交
691 692 693 694 695 696
	let permissionNeed = ["android.permission.READ_PHONE_STATE"]
	if (UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
    	console.log("当前已具备指定权限")
	}
```

杜庆泉's avatar
杜庆泉 已提交
697
### convert2AbsFullPath(path:string)
D
DCloud_LXH 已提交
698 699 700 701 702 703 704 705 706

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

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

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

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

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

D
DCloud_LXH 已提交
708
::: warning 注意事项
杜庆泉's avatar
杜庆泉 已提交
709 710 711

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

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

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

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


D
DCloud_LXH 已提交
719
- [代码包文件](../api/file-system-spec.md#package)
杜庆泉's avatar
杜庆泉 已提交
720 721 722
  - `代码包文件``真机运行``云打包`模式下的释放策略不同:\
  	本地真机运行:会被存在放内置储存目录\
  	云打包: `uni-app x`项目会被存放在`asset`目录, `uni-app` 项目会被存放在内置储存目录\
D
DCloud_LXH 已提交
723 724 725 726 727 728 729
  	因此在 `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 已提交
730

D
DCloud_LXH 已提交
731
:::
杜庆泉's avatar
杜庆泉 已提交
732 733

```ts
杜庆泉's avatar
杜庆泉 已提交
734
// 代码包文件
杜庆泉's avatar
杜庆泉 已提交
735
console.log(UTSAndroid.convert2AbsFullPath('static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
736
// 沙盒文件
杜庆泉's avatar
杜庆泉 已提交
737
console.log(UTSAndroid.convert2AbsFullPath('unifile://sandbox/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
738 739
// 沙盒外文件 包含相对路径
console.log(UTSAndroid.convert2AbsFullPath('../../../io.dcloud.HBuilder/apps/HBuilder/www/static/logo.png'))
杜庆泉's avatar
杜庆泉 已提交
740 741 742 743 744
```




杜庆泉's avatar
杜庆泉 已提交
745
### getFileProviderUri(file:File)
D
DCloud_LXH 已提交
746 747 748 749 750 751 752 753 754

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

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

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

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

D
DCloud_LXH 已提交
755 756 757 758 759 760 761 762 763 764 765
```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 已提交
766

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

杜庆泉's avatar
杜庆泉 已提交
768
### getJavaClass(input:any)
D
DCloud_LXH 已提交
769 770 771 772 773 774 775 776

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
778 779 780 781 782 783 784 785 786 787 788 789 790 791
```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
杜庆泉 已提交
792
### getTopPageActivity()
杜庆泉's avatar
杜庆泉 已提交
793 794 795 796 797 798 799 800

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

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

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

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

杜庆泉's avatar
杜庆泉 已提交
802 803 804 805 806
```ts
// 获取当前栈顶activity
console.log(UTSAndroid.getTopPageActivity())
```

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

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

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

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

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

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
817
### offActivityCallback(callback)
M
mahaifeng 已提交
818

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

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

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

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

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
827
### onPrivacyAgreeChange(callback)
M
mahaifeng 已提交
828

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

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

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

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

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
837
### offPrivacyAgreeChange(callback)
M
mahaifeng 已提交
838

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

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

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

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

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