提交 9afad088 编写于 作者: 杜庆泉's avatar 杜庆泉

整理utsAndroid 测试

上级 fd580c76
<template> <template>
<view> <view>
<button class="width:100%" @click="getAppContextClick" >getAppContext</button> <view class="uni-padding-wrap uni-common-mt">
<button class="width:100%" @click="getUniActivityClick">getUniActivity</button> <view class="uni-hello-text">
<button class="width:100%" @click="getAppTempPathClick">getAppTempPath</button> 逐一点击执行,观察测试反馈
<button class="width:100%" @click="typeofClick">typeof</button> </view>
<button class="width:100%" @click="checkSystemPermissionGrantedClick">checkSystemPermissionGranted</button> </view>
<button class="width:100%" @click="getSystemPermissionDeniedClick">getSystemPermissionDenied</button>
<button class="width:100%" @click="gotoSystemPermissionActivityClick">gotoSystemPermissionActivity</button> <button @click="getAppContextClick">getAppContext</button>
<button class="width:100%" @click="arrayPermissionFlowClick">组权限申请流程测试</button> <button @click="getUniActivityClick">getUniActivity</button>
<button @click="getAppTempPathClick">getAppTempPath</button>
<button @click="typeofClick">typeof</button>
<button @click="arrayPermissionFlowClick">组权限申请流程测试</button>
<button @click="singlePermissionFlowClick">单权限申请流程测试</button>
<button @click="dispatchAsyncClick">任务分发测试</button>
<button @click="pathTestClick">路径转换测试</button>
<view class="uni-padding-wrap uni-common-mt">
<view class="uni-hello-text">
1. 当前页面已通过initAppLifecycle函数注册了生命周期监听。
</view>
<view class="uni-hello-text">
2. 手动切换其他APP再返回,可在控制台和界面观察事件日志
</view>
</view>
<view class="uni-padding-wrap uni-common-mt">
<view class="text-box" scroll-y="true">
<text>{{text}}</text>
</view>
</view>
<button class="testButton" @click="gotoSystemPermissionActivityClick">手动申请权限测试</button>
<button @tap="testGoOtherActivity">跳转拍照界面</button>
<button @tap="testUnRegLifecycle">取消注册周期函数</button>
<image :src="selectImage" v-if="selectImage"></image>
</view> </view>
</template> </template>
<script> <script>
import { import {
getAppContextTest, getAppContextTest,
getUniActivityTest, getUniActivityTest,
getAppTempPathTest, getAppTempPathTest,
typeofClickTest, typeofClickTest,
checkSystemPermissionGrantedTest,
getSystemPermissionDeniedTest,
gotoSystemPermissionActivityTest, gotoSystemPermissionActivityTest,
arrayPermissionFlowTest arrayPermissionFlowTest,
singlePermissionFlowTest,
dispatchAsyncTest,
convert2AbsFullPathTest,
unRegLifecycle,
initAppLifecycle,
gotoCameraTake
} from '@/uni_modules/uts-platform-api' } from '@/uni_modules/uts-platform-api'
/** /**
...@@ -30,76 +56,157 @@ ...@@ -30,76 +56,157 @@
*/ */
export default { export default {
data() { data() {
return {} return {
text: '',
selectImage:''
}
},
onLoad:function(){
let that = this;
initAppLifecycle(function(eventLog){
// 展示捕捉到的声明周期日志
that.text = that.text += eventLog;
that.text = that.text += '\n';
});
}, },
methods: { methods: {
testGoOtherActivity(){
var that = this;
let ret = gotoCameraTake(function(file){
// 展示捕捉到的声明周期日志
console.log(file);
that.selectImage = "file://" + file;
});
if(!ret){
uni.showToast({
icon:'none',
title:'测试失败'
})
}
},
testUnRegLifecycle(){
// 取消注册生命周期
unRegLifecycle();
},
getAppContextClick() { getAppContextClick() {
console.log("getAppContextClick") if (getAppContextTest()) {
if(getAppContextTest()){
uni.showToast({ uni.showToast({
title:'测试通过' title: '测试通过'
}) })
}else{ } else {
uni.showToast({ uni.showToast({
icon:'error', icon: 'error',
title:'测试失败' title: '测试失败'
}) })
} }
}, },
getUniActivityClick() { getUniActivityClick() {
getUniActivityTest() if (getUniActivityTest()) {
uni.showToast({
title: '测试通过'
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败'
})
}
}, },
pathTestClick() {
getAppTempPathClick() { if (convert2AbsFullPathTest()) {
getAppTempPathTest() uni.showToast({
title: '测试通过'
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败'
})
}
}, },
typeofClick() { getAppTempPathClick() {
if(typeofClickTest()){ if (getAppTempPathTest()) {
uni.showToast({ uni.showToast({
title:'测试通过' title: '测试通过'
}) })
}else{ } else {
uni.showToast({ uni.showToast({
icon:'error', icon: 'error',
title:'测试失败' title: '测试失败'
}) })
} }
}, },
checkSystemPermissionGrantedClick() { dispatchAsyncClick() {
if(checkSystemPermissionGrantedTest()){ dispatchAsyncTest(function(ret,desc){
if (ret) {
uni.showToast({ uni.showToast({
title:'测试通过' icon: 'none',
title: '测试通过'
}) })
}else{ } else {
uni.showToast({ uni.showToast({
icon:'error', icon: 'none',
title:'测试失败' title: '失败:' + desc
}) })
} }
})
}, },
getSystemPermissionDeniedClick() { typeofClick() {
if(getSystemPermissionDeniedTest()){ if (typeofClickTest()) {
uni.showToast({ uni.showToast({
title:'测试通过' title: '测试通过'
}) })
}else{ } else {
uni.showToast({ uni.showToast({
icon:'error', icon: 'error',
title:'测试失败' title: '测试失败'
}) })
} }
}, },
gotoSystemPermissionActivityClick() { gotoSystemPermissionActivityClick() {
gotoSystemPermissionActivityTest() gotoSystemPermissionActivityTest()
}, },
arrayPermissionFlowClick() { arrayPermissionFlowClick() {
arrayPermissionFlowTest() arrayPermissionFlowTest(function(ret,desc){
if (ret) {
uni.showToast({
icon: 'none',
title: '测试通过'
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc
})
} }
})
},
singlePermissionFlowClick() {
singlePermissionFlowTest(function(ret,desc){
if (ret) {
uni.showToast({
icon: 'none',
title: '测试通过'
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc
})
}
})
}
} }
} }
</script> </script>
<style> <style>
.testButton{
width:100%
}
</style> </style>
\ No newline at end of file
import { import {
UTSAndroid UTSAndroid
} from "io.dcloud.uts"; } from "io.dcloud.uts";
import MediaStore from "android.provider.MediaStore";
import Activity from "android.app.Activity";
import Bitmap from "android.graphics.Bitmap";
import FileOutputStream from "java.io.FileOutputStream";
import Intent from 'android.content.Intent';
/** /**
* UTSAndroid.getAppContext * UTSAndroid.getAppContext 测试示例
* https://uniapp.dcloud.net.cn/plugin/uts-for-android.html#_4-1-application-%E4%B8%8A%E4%B8%8B%E6%96%87%E7%9B%B8%E5%85%B3
*/ */
export function getAppContextTest():boolean{ export function getAppContextTest() : boolean {
if(UTSAndroid.getAppContext() == null){ if (UTSAndroid.getAppContext() == null) {
console.log("UTSAndroid.getAppContext() error") console.log("UTSAndroid.getAppContext() error")
return false return false
} }
if(UTSAndroid.getUniActivity() == null){ if (UTSAndroid.getUniActivity() == null) {
console.log("UTSAndroid.getUniActivity() error") console.log("UTSAndroid.getUniActivity() error")
return false return false
} }
if(UTSAndroid.getUniActivity()!.getApplicationContext() == UTSAndroid.getAppContext()){ if (UTSAndroid.getUniActivity()!.getApplicationContext() != UTSAndroid.getAppContext()) {
console.log(UTSAndroid.getUniActivity()!.getApplicationContext())
console.log(UTSAndroid.getAppContext())
return false return false
} }
console.log("getAppContextTest success")
return true return true
} }
export function getUniActivityTest(){ /**
console.log(UTSAndroid.getUniActivity()) * UTSAndroid.getUniActivity 测试示例
* https://uniapp.dcloud.net.cn/plugin/uts-for-android.html#_4-2-1-getuniactivity
*/
export function getUniActivityTest() : boolean {
if (UTSAndroid.getUniActivity() == null) {
return false
}
return true
} }
/**
export function getAppTempPathTest(){ * UTSAndroid.getAppTempPath 测试示例
console.log(UTSAndroid.getAppTempPath()) */
export function getAppTempPathTest() : boolean {
if (UTSAndroid.getAppTempPath()!.contains("data/io.dcloud.HBuilder/apps/HBuilder/temp")) {
return true
}
return false
} }
export function typeofClickTest():boolean{ /**
* UTSAndroid.typeof 测试示例
*/
export function typeofClickTest() : boolean {
if(UTSAndroid.typeof('hello wrold') != 'string'){ if (UTSAndroid.typeof('hello wrold') != 'string') {
return false return false
} }
if(UTSAndroid.typeof(3.1415926) != 'number'){ if (UTSAndroid.typeof(3.1415926) != 'number') {
return false return false
} }
if(UTSAndroid.typeof(-100) != 'number'){ if (UTSAndroid.typeof(-100) != 'number') {
return false return false
} }
if(UTSAndroid.typeof(false) != 'boolean'){ if (UTSAndroid.typeof(false) != 'boolean') {
return false return false
} }
if(UTSAndroid.typeof(true) != 'boolean'){ if (UTSAndroid.typeof(true) != 'boolean') {
return false return false
} }
if(UTSAndroid.typeof(new Date()) != 'object'){ if (UTSAndroid.typeof(new Date()) != 'object') {
return false return false
} }
return true return true
}
/**
* 手动跳转用户授权管理界面
*/
export function gotoSystemPermissionActivityTest() {
/**
* 用户手动授权录音权限
*/
UTSAndroid.gotoSystemPermissionActivity(UTSAndroid.getUniActivity()!, utsArrayOf('Manifest.permission.RECORD_AUDIO'))
} }
/**
* 跳转系统拍照界面,并触发相关生命周期测试
*/
export function gotoCameraTake(imageDone : (event : string) => void) : boolean {
export function checkSystemPermissionGrantedTest():boolean{ let permissionNeed = utsArrayOf("android.permission.CAMERA")
let ret = UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!,utsArrayOf('Manifest.permission.RECORD_AUDIO'))
console.log(ret)
let ret3 = UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!,utsArrayOf('Manifest.permission.ACCESS_WIFI_STATE','Manifest.permission.WRITE_CALENDAR','Manifest.permission.BLUETOOTH'))
console.log(ret3)
return true UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight : boolean, _grantedList : string[]) {
} if (allRight) {
// 交给目前的location 引擎,真实执行
UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data ?: Intent) => {
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);
}
}
});
let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//resolveActivity 返回可处理 Intent 的第一个 Activity 组件
if (takePictureIntent.resolveActivity(UTSAndroid.getUniActivity()!.getPackageManager()) != null) {
UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 1001);
}
} else {
//callback(false,"用户拒绝了部分权限")
}
}, function (_doNotAskAgain : boolean, _grantedList : string[]) {
//callback(false,"用户拒绝了部分权限")
})
export function getSystemPermissionDeniedTest():boolean{ return true;
let ret = UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!,utsArrayOf('Manifest.permission.RECORD_AUDIO'))
console.log(ret)
let ret3 = UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!,utsArrayOf('Manifest.permission.ACCESS_WIFI_STATE','Manifest.permission.WRITE_CALENDAR','Manifest.permission.BLUETOOTH'))
console.log(ret3)
return true
} }
export function gotoSystemPermissionActivityTest(){ /**
UTSAndroid.gotoSystemPermissionActivity(UTSAndroid.getUniActivity()!,utsArrayOf('Manifest.permission.RECORD_AUDIO')) * 初始化生命周期相关
*/
export function initAppLifecycle(onLifecycleChange : (event : string) => void) {
/**
* application 内存不足的回调函数
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onapptrimmemory
*/
UTSAndroid.onAppTrimMemory((level : Number) => {
let eventName = "onAppTrimMemory - " + level;
onLifecycleChange(eventName);
console.log(eventName);
});
/**
* application 状态改变的回调函数
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onAppConfigChange
*/
UTSAndroid.onAppConfigChange((ret : UTSJSONObject) => {
let eventName = "onAppConfigChange - " + JSON.stringify(ret);
onLifecycleChange(eventName);
console.log(eventName);
});
/**
* activity 销毁生命周期回调
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy
*/
UTSAndroid.onAppActivityDestroy(() => {
let eventName = "onAppActivityDestroy";
onLifecycleChange(eventName);
console.log(eventName);
});
/**
* activity 失去焦点生命周期回调
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause
*/
UTSAndroid.onAppActivityPause(() => {
let eventName = "onAppActivityPause";
onLifecycleChange(eventName);
console.log(eventName);
});
/**
* activity 得到焦点的周期回调
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume
*/
UTSAndroid.onAppActivityResume(() => {
let eventName = "onAppActivityResume";
onLifecycleChange(eventName);
console.log(eventName);
});
/**
* activity 回退物理按键事件回调
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityback
*/
UTSAndroid.onAppActivityBack(() => {
let eventName = "onAppActivityBack";
onLifecycleChange(eventName);
console.log(eventName);
});
} }
export function requestSystemPermission(){
// UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!,utsArrayOf('Manifest.permission.RECORD_AUDIO')) /**
* 取消注册生命周期函数
*/
export function unRegLifecycle() {
/**
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onapptrimmemory
*/
UTSAndroid.offAppTrimMemory();
// let permissionNeed : string[] = utsArrayOf("android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"); /**
// UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight:boolean,_grantedList:string[]) { * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onAppConfigChange
// if (allRight) { */
// // 交给目前的location 引擎,真实执行 UTSAndroid.offAppConfigChange();
// console.log("all right:")
// } /**
// }, function (_doNotAskAgain:boolean,_grantedList:string[]) { * 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitydestroy
// console.log("用户拒绝了部分权限:") */
UTSAndroid.offAppActivityDestroy();
// }) /**
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivitypause
*/
UTSAndroid.offAppActivityPause();
/**
* 说明文档:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#onappactivityresume
*/
UTSAndroid.offAppActivityResume();
/**
* activity 回退物理按键事件回调
*/
UTSAndroid.offAppActivityBack();
} }
/** /**
* 一组权限,申请流程测试 * 一组权限,申请流程测试
*/ */
export function arrayPermissionFlowTest():boolean{ export function arrayPermissionFlowTest(callback : (ret : boolean, desc : string) => void) {
// if(!UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!,utsArrayOf("android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"))){
// // 此时预期 /**
// return false * 同时申请日历和联系人权限
// } */
let permissionNeed = utsArrayOf("android.permission.READ_CALENDAR", "android.permission.WRITE_CALENDAR", "android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS", "android.permission.GET_ACCOUNTS")
if (UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
callback(false, "预期当前不具备 读写日历/联系人的权限")
return;
}
UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight : boolean, _grantedList : string[]) {
if (allRight) {
// 交给目前的location 引擎,真实执行
// 测试权限api 返回值
if (!UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
// 预期当前基座具备了读写日历的权限
callback(false, "权限请求完成,getSystemPermissionDenied 失败")
return;
}
if (!UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!, permissionNeed)) {
callback(false, "权限请求完成,checkSystemPermissionGranted 失败")
return;
}
callback(true, "")
} else {
callback(false, "用户拒绝了部分权限")
}
}, function (_doNotAskAgain : boolean, _grantedList : string[]) {
callback(false, "用户拒绝了部分权限")
})
}
/**
* 任务分发测试
*/
export function dispatchAsyncTest(callback : (ret : boolean, desc : string) => void) {
UTSAndroid.dispatchAsync("main",function(res){
if(Thread.currentThread().name != 'main'){
callback(false,"main thread error")
return
}
UTSAndroid.dispatchAsync("dom",function(res){
/**
* dom 参数,只在2.0生效,1.0会自动切换到main线程
*/
if(Thread.currentThread().name != 'main' && Thread.currentThread().name != 'io_dcloud_uniapp_dom'){
callback(false,"dom thread error")
return
}
UTSAndroid.dispatchAsync("io",function(res){
/**
* dom 参数,只在2.0生效,1.0会自动切换到main线程
*/
if(!Thread.currentThread().name.startWith("DefaultDispatcher")){
callback(false,"io thread error")
return
}
callback(true)
},null)
},null)
},null)
}
/**
* 路径转换测试
*/
export function convert2AbsFullPathTest() : boolean {
let resourcePath = UTSAndroid.convert2AbsFullPath("static/logo.png")
console.log(resourcePath)
let resourcePath2 = UTSAndroid.getResourcePath("static/logo.png")
console.log(resourcePath2)
if (resourcePath != resourcePath2) {
console.log("convert2AbsFullPath 与 getResourcePath 结果不一致")
return false;
}
if (!resourcePath.contains("Android/data/io.dcloud")) {
console.log("路径转换结果错误")
return false;
}
let sdcardPath = UTSAndroid.convert2AbsFullPath(resourcePath)
console.log(sdcardPath)
if (resourcePath != sdcardPath) {
console.log("绝对路径转换结果错误")
return false;
}
return true return true
} }
/**
* 单个权限,申请流程测试
*/
export function singlePermissionFlowTest(callback : (ret : boolean, desc : string) => void) {
let permissionNeed = utsArrayOf("android.permission.RECORD_AUDIO")
if (UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
callback(false, "预期当前不具备 录音的权限")
return;
}
UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, permissionNeed, function (allRight : boolean, _grantedList : string[]) {
if (allRight) {
// 交给目前的location 引擎,真实执行
// 测试权限api 返回值
if (!UTSAndroid.getSystemPermissionDenied(UTSAndroid.getUniActivity()!, permissionNeed).isEmpty()) {
// 预期当前基座具备了读写日历的权限
callback(false, "权限请求完成,getSystemPermissionDenied 失败")
return;
}
if (!UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!, permissionNeed)) {
callback(false, "权限请求完成,checkSystemPermissionGranted 失败")
return;
}
callback(true, "")
} else {
callback(false, "用户拒绝了部分权限")
}
}, function (_doNotAskAgain : boolean, _grantedList : string[]) {
callback(false, "用户拒绝了部分权限")
})
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册