43 lines
1.4 KiB
Plaintext
43 lines
1.4 KiB
Plaintext
|
|
|
|||
|
|
import { UTSAndroid } from "io.dcloud.uts";
|
|||
|
|
|
|||
|
|
type Perssion={
|
|||
|
|
isPass:boolean,
|
|||
|
|
failList?:Array<string>,
|
|||
|
|
successList?:Array<string>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//请求系统权限 isPass为true代表全部权限通过,successList为通过的权限 failList为失败的权限
|
|||
|
|
function getSystemPermission(perssionList:string[],callback:(val:Perssion)=>void):void{
|
|||
|
|
UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!,perssionList,function(allRight:boolean,grantedList:string[]){
|
|||
|
|
if(allRight){
|
|||
|
|
// 用户同意了全部权限
|
|||
|
|
callback({isPass:true,successList:perssionList,failList:[]} as Perssion)
|
|||
|
|
}else{
|
|||
|
|
// 用户仅同意了某些权限
|
|||
|
|
let failList:string[]=(perssionList as string[]).filter((name:string,index:number):boolean=>!grantedList.includes(name));
|
|||
|
|
callback({isPass:false,successList:grantedList,failList} as Perssion)
|
|||
|
|
}
|
|||
|
|
},function(doNotAskAgain:boolean,grantedList:string[]){
|
|||
|
|
// 不再询问的权限
|
|||
|
|
console.log('doNotAskAgain===',doNotAskAgain)
|
|||
|
|
if(doNotAskAgain){
|
|||
|
|
callback({isPass:false,failList:grantedList,successList:[]} as Perssion)
|
|||
|
|
}else{
|
|||
|
|
if(grantedList.length===perssionList.length){
|
|||
|
|
callback({isPass:false,failList:grantedList,successList:[]} as Perssion)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//初始化需要的权限
|
|||
|
|
export function initPerssion(val:string[]):Promise<Perssion>{
|
|||
|
|
return new Promise((resolve,reject)=>{
|
|||
|
|
//判断是否有权限
|
|||
|
|
let perssion=val;
|
|||
|
|
getSystemPermission(perssion,(res)=>{
|
|||
|
|
resolve(res);
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
}
|