# PMS - [Overview](#section458050375165625) - [Summary](#section2001005409165625) - [Files](#files) - [Functions](#func-members) - [Details](#section211281568165625) - [Function](#section1914856096165625) - [CheckPermission\(\)](#gaaaf2b952db3d8336c9b2309eaf67d1f7) - [CheckSelfPermission\(\)](#ga099c9ba42ace42091cbd15d9d7f202fb) - [GrantPermission\(\)](#gad6c5889b56e196477152bbf4ce9f462c) - [GrantRuntimePermission\(\)](#ga5e1343c802844acc6b2d95181ca36b66) - [QueryPermission\(\)](#gab279d23a1850f03e73de08b25e734679) - [RevokePermission\(\)](#ga75cad2f174190a59d40e963481ddcbd7) ## **Overview** **Description:** Manages permissions. This module provides interfaces for managing permissions of third-party applications. **Since:** 1.0 **Version:** 1.0 ## **Summary** ## Files

File Name

Description

pms_interface.h

Declares interfaces for managing permissions.

## Functions

Function

Description

CheckPermission (int uid, const char *permissionName)

int

Checks whether the caller (generally a third-party application) has a specified permission of a system service API.

CheckSelfPermission (const char *permissionName)

int

Checks whether the caller (generally a third-party application) has a specified permission of a system service API.

QueryPermission (const char *identifier, PermissionSaved **permissions, int *permNum)

int

Queries all permissions requested by the application and checks whether these permissions are granted.

GrantPermission (const char *identifier, const char *permName)

int

Grants a specified permission to the application.

RevokePermission (const char *identifier, const char *permName)

int

Revokes a specified permission from the application.

GrantRuntimePermission (int uid, const char *permissionName)

int

Grants a specified runtime permission to an application.

## **Details** ## **Function ** ## CheckPermission\(\) ``` int CheckPermission (int uid, const char * permissionName ) ``` **Description:** Checks whether the caller \(generally a third-party application\) has a specified permission of a system service API. **Parameters:**

Name

Description

uid Indicates the process uid of the caller. The range is [0, INT_MAX].
permissionName Indicates the pointer to the permission name. For details, see the developer documentation.
**Returns:** Returns **1** if the caller has the permission; returns **0** otherwise. ## CheckSelfPermission\(\) ``` int CheckSelfPermission (const char * permissionName) ``` **Description:** Checks whether the caller \(generally a third-party application\) has a specified permission of a system service API. **Parameters:**

Name

Description

permissionName Indicates the pointer to the permission name. For details, see the developer documentation.
**Returns:** Returns **1** if the caller has the permission; returns **0** otherwise. ## GrantPermission\(\) ``` int GrantPermission (const char * identifier, const char * permName ) ``` **Description:** Grants a specified permission to the application. **Parameters:**

Name

Description

identifier Indicates the pointer to the application bundle name.
permName Indicates the pointer to the permission name. For details, see the developer documentation.
**Returns:** Returns **0** if the permission is successfully granted; returns an error code defined in [PmsErrorCode](Pms_types.md#gacb79d7f5cd64c73479e0bdd9525265a8) otherwise. ## GrantRuntimePermission\(\) ``` int GrantRuntimePermission (int uid, const char * permissionName ) ``` **Description:** Grants a specified runtime permission to an application. This function applies to sensitive permissions that can be granted to the application only when the application is running. **Parameters:**

Name

Description

uid Indicates the user ID of the application. The range is [0, INT_MAX].
permissionName Indicates the pointer to the permission name. For details, see the developer documentation.
**Returns:** Returns **0** if the permission is successfully granted; returns an error code defined in [PmsErrorCode](Pms_types.md#gacb79d7f5cd64c73479e0bdd9525265a8) otherwise. ## QueryPermission\(\) ``` int QueryPermission (const char * identifier, [PermissionSaved](PermissionSaved.md) ** permissions, int * permNum ) ``` **Description:** Queries all permissions requested by the application and checks whether these permissions are granted. **Parameters:**

Name

Description

identifier Indicates the pointer to the application bundle name.
permissions Indicates the double pointer to the array of permissions. You need to pass the PermissionSaved pointer and release it after finishing using it.
permNum Indicates the pointer to the number of permissions in the array, which is an integer.
**Returns:** Returns **0** if the operation is successful; returns an error code defined in [PmsErrorCode](Pms_types.md#gacb79d7f5cd64c73479e0bdd9525265a8) otherwise. ## RevokePermission\(\) ``` int RevokePermission (const char * identifier, const char * permName ) ``` **Description:** Revokes a specified permission from the application. **Parameters:**

Name

Description

identifier Indicates the pointer to the application bundle name.
permName Indicates the pointer to the permission name. For details, see the developer documentation.
**Returns:** Returns **0** if the permission is successfully revoked; returns an error code defined in [PmsErrorCode](Pms_types.md#gacb79d7f5cd64c73479e0bdd9525265a8) otherwise.