当前位置:网站首页>[harmony OS] [ark UI] basic ETS context operations

[harmony OS] [ark UI] basic ETS context operations

2022-06-25 03:57:00 Huawei Developer Forum

stay HarmonyOS In development ,‘ Permission to apply for ’,‘ Permission check ’,‘ Get version information ’,‘ Get package name ’ It's all basic operations , Today, learn how to implement the following functions , It is mainly divided into ‘Api explain ’,‘ Code implementation ’,‘ Running effect ’ Three steps are described

 

1. Api explain

1.1 Reference resources Ability Context
1.2 context.verifyPermission
verifyPermission(permission: string, options?: PermissionOptions): Promise
Check whether the specified process has the specified permission ,options Is an optional parameter , If it is not set, it means to check its own permissions , Use Promise As an asynchronous method .
1.2.1 Request parameters
Parameter one permission: Permissions requiring verification
Parameter two options: contain pid,uid( Conventional applications do not use , There is no detailed explanation here )
1.2.2 Return type
Promise:Promise Return the result in the form of . return -1 Indicates that you do not have the current check permission ,0 It means you have permission
1.2.3 Example :

import ability_featureAbility from '@ohos.ability.featureAbility'var context = ability_featureAbility.getContext();let permission = "ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS";context.verifyPermission(permission,(error, data)=>{          if (error) {        console.error('Operation failed. Cause: ' + JSON.stringify(error));        return;    }    console.info('Operation successful. Data:' + JSON.stringify(data))})

1.3 context.requestPermissionsFromUser
requestPermissionsFromUser(permissions: Array, requestCode: number): Promise
Request certain permissions from the user , Before applying for permission, query whether its own process has been granted the permission (verifyPermission), If you already have permission , There is no need to apply for , Otherwise, you need to apply for permission . Use Promise As an asynchronous method .
1.3.1 Parameters,
Parameter one :permissions: Request permission granted
Shen II :requestCode : Request status code The specific request code corresponding to the matching application , Value range : Greater than or equal to 0
1.3.2 Return value :Promise: Callback function , You can process the interface return value in the callback function , Return the permission request result
1.3.3PermissionRequestResult Properties,
requestCode: Get the returned request code , It is mainly used to determine which permission is requested
permissions: Request permission collection
authResults: Permission verification results , return -1 Indicates that you do not have the current check permission ,0 It means you have permission
1.3.4 Example

import ability_featureAbility from '@ohos.ability.featureAbility'var context = ability_featureAbility.getContext();let permissions = ["ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS","ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION"];let requestCode = 123context.requestPermissionsFromUser(permissions, requestCode)     .then((data) => {    console.info('Operation successful. Data: ' + JSON.stringify(data));}).catch((error) => {    console.error('Operation failed. Cause: ' + JSON.stringify(error));})

1.4.1 context.getAppVersionInfo
getAppVersionInfo():Promise
Get the version information of the application , Use Promise As an asynchronous method .
1.4.2 Return results :Promise: Return the application version information .
AppVersionInfo Parameters,
appName: apply name
versionCode: Application version number
versionName: Application version name
1.4.3 The preparation of information needs to be done in config.json Search for version label , As shown in the figure below

cke_3445.png

1.4.4 Sample code

import ability_featureAbility from '@ohos.ability.featureAbility'var context = ability_featureAbility.getContext();context.getAppVersionInfo()     .then((data) => {    console.info('Operation successful. Data: ' + JSON.stringify(data));}).catch((error) => {    console.error('Operation failed. Cause: ' + JSON.stringify(error));})

1.5.1 context.getBundleName
getBundleName(): Promise
obtain Ability The package name information of the , Use Promise As an asynchronous method .
Return value :Promise:Promise returns Ability The package name information of the .
1.5.2 Reference resources The elements of the configuration file Of bundleName. The effect is as follows

cke_7818.png

2. Code implementation

2.1 Need to be in config.json Registration rights , Reference resources The elements of the configuration file Of reqPermissions

cke_12162.png

2.2 At present, the application authority is as follows
2.2.1 ohos.permission.READ_USER_STORAGE
2.2.2 ohos.permission.CAMERA

cke_15463.png

2.2.3 All the code

 import ability_featureAbility from '@ohos.ability.featureAbility'@[email protected] MyFeatureAbilityPage {  private myVerifyPermission() {    var context = ability_featureAbility.getContext();    let permission = "ohos.permission.CAMERA";    context.verifyPermission(permission, null)      .then((data) => {        if(data===-1){          console.log(' Currently do not have permission  ' );        }else{          console.log(' Currently, you have permission  ' );        }      }).catch((error) => {      console.log('Operation failed. Cause: ' + JSON.stringify(error));    })  }  private MyRequestPermissionsFromUser() {    var context = ability_featureAbility.getContext();    let permissions = ["ohos.permission.CAMERA","ohos.permission.READ_USER_STORAGE"];    let requestCode = 123    context.requestPermissionsFromUser(permissions, requestCode)      .then((data) => {        console.log(" Request code "+data.requestCode)        console.log(" Request permission "+data.permissions.toString())        if(requestCode===data.requestCode){// It is used to judge whether the returned request code is the same as the applied request             for(var i=0;i<data.permissions.length;i++){              if(data.authResults[i]==-1){                console.log(" Request permission :"+data.permissions[i]+"==> The request status is rejected ")              }else{                console.log(" Request permission :"+data.permissions[i]+"==> The request status is consent ")              }            }        }      }).catch((error) => {      console.log('Operation failed. Cause: ' + JSON.stringify(error));    })  }  private MyGetAppVersionInfo() {    var context = ability_featureAbility.getContext();    context.getAppVersionInfo()      .then((data) => {        console.log("getAppVersionInfo===> apply name :"+data.appName)        console.log("getAppVersionInfo===>versionCode:"+data.versionCode)        console.log("getAppVersionInfo===>versionName:"+data.versionName)      }).catch((error) => {      console.log('Operation failed. Cause: ' + JSON.stringify(error));    })  }  private myGetBundleName() {    var context = ability_featureAbility.getContext();    context.getBundleName()      .then((data) => {        console.log('getBundleName Package name : ' + JSON.stringify(data));      }).catch((error) => {      console.log('Operation failed. Cause: ' + JSON.stringify(error));    })  }  build() {    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {      Text(' Check current permissions ')        .fontSize(50)        .fontWeight(FontWeight.Bold)        .onClick(this.myVerifyPermission.bind(this))      Text(' Application authority ')        .fontSize(50)        .fontWeight(FontWeight.Bold)        .onClick(this.MyRequestPermissionsFromUser.bind(this))      .backgroundColor(Color.Red)      Text(' Get version information ')        .fontSize(50)        .fontWeight(FontWeight.Bold)        .onClick(this.MyGetAppVersionInfo.bind(this))      Text(' Get package name ')        .fontSize(50)        .fontWeight(FontWeight.Bold)        .onClick(this.myGetBundleName.bind(this))      .backgroundColor(Color.Red)    }    .width('100%')    .height('100%')  }}

3. Running effect

%E4%B8%8A%E4%B8%8B%E6%96%87.gif

 
 
原网站

版权声明
本文为[Huawei Developer Forum]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/176/202206250135373892.html