当前位置: 首页> 文旅> 艺术 > 合同管理系统_怎么做网络推广赚佣金_关于普通话的手抄报_历下区百度seo

合同管理系统_怎么做网络推广赚佣金_关于普通话的手抄报_历下区百度seo

时间:2025/7/11 14:31:06来源:https://blog.csdn.net/benco1986/article/details/146641987 浏览次数:0次
合同管理系统_怎么做网络推广赚佣金_关于普通话的手抄报_历下区百度seo

OpenHarmony子系统开发 - 安全(二)

三、应用权限管理开发指导

运作机制

由于OpenHarmony允许安装三方应用,所以需要对三方应用的敏感权限调用进行管控,具体实现是应用在开发阶段就需要在应用配置文件中指明此应用在运行过程中可能会调用哪些敏感权限,这些权限包括静态权限和动态权限,静态权限表示只需要在安装阶段注册就可以,而动态权限一般表示获取用户的敏感信息,所以需要在运行时让用户确认才可以调用,授权方式包括系统设置应用手动授权等。除了运行时对应用调用敏感权限进行管控外,还需要利用应用签名管控手段确保应用安装包已经被设备厂商进行了确认。

表1 OpenHarmony系统权限列表

OpenHarmony系统权限授权方式权限说明
ohos.permission.LISTEN_BUNDLE_CHANGEsystem_grant(静态权限)允许该应用获取应用变化消息。
ohos.permission.GET_BUNDLE_INFOsystem_grant(静态权限)允许该应用获取应用信息。
ohos.permission.INSTALL_BUNDLEsystem_grant(静态权限)允许该应用安装应用。
ohos.permission.CAMERAuser_grant(动态权限)此应用可随时使用相机拍摄照片和录制视频。
ohos.permission.MODIFY_AUDIO_SETTINGSsystem_grant(静态权限)允许该应用修改全局音频设置,例如音量和用于输出的扬声器。
ohos.permission.READ_MEDIAuser_grant(动态权限)允许该应用读取您的视频收藏。
ohos.permission.MICROPHONEuser_grant(动态权限)此应用可随时使用麦克风进行录音。
ohos.permission.WRITE_MEDIAuser_grant(动态权限)允许该应用写入您的音乐收藏。
ohos.permission.DISTRIBUTED_DATASYNCuser_grant(动态权限)管控分布式数据传输能力。
ohos.permission.DISTRIBUTED_VIRTUALDEVICEuser_grant(动态权限)允许应用使用分布式虚拟能力。

icon-note.gif

说明:

  1. 静态权限指应用安装时由系统授予的权限,对应于权限敏感级别的system_grant。动态权限指应用在运行过程中需要用户授权的权限,对应于权限敏感级别的user_grant。

  2. 不同应用模型的应用配置文件不同,FA模型为config.json,Stage模型为module.json5。应用模型相关解释可参考应用模型解读。

场景介绍

应用权限是软件用来访问系统资源和使用系统能力的一种通行方式。在涉及用户隐私相关功能和数据的场景,例如:访问个人设备的硬件特性,如摄像头、麦克风,以及读写媒体文件等,OpenHarmony通过应用权限管理组件来保护这些数据以及能力。

在系统应用开发过程中,如果应用要使用敏感权限,开发者可以调用应用权限管理组件接口检查待访问权限是否被授权,如果未授权,操作不允许。

接口说明

应用权限管理提供的API接口,当前仅供系统应用和系统服务调用,具体API接口如下。

表2 应用权限管理API接口功能介绍

接口名描述
int CheckPermission(int uid, const char *permissionName)检查指定UID的应用进程是否具有访问系统服务API的权限。
int CheckSelfPermission(const char *permissionName)检查调用者是否具有访问系统服务API的权限。
int QueryPermission(const char *identifier, PermissionSaved **permissions, int *permNum)查询应用申请的所有权限,并检查权限是否被授予。
int GrantPermission(const char *identifier, const char *permName)将指定权限授予应用程序。
int RevokePermission(const char *identifier, const char *permName)收回应用程序的指定权限。
int GrantRuntimePermission(int uid, const char *permissionName)应用运行时动态授予指定权限。
int RevokeRuntimePermission(int uid, const char *permissionName)应用运行时动态撤销指定权限。

开发步骤

本部分以包管理器的应用权限开发为例进行讲解。开发过程中,首先需要明确涉及的敏感权限,并在config.json中声明该权限,在安装应用程序时,包管理器会调用应用权限管理组件的接口检查该权限是否被授予,若授予,安装流程正常进行,否则安装失败。

  1. 在开发过程中,包管理器明确需要安装应用的权限(ohos.permission.INSTALL_BUNDLE),并在config.json中声明该权限。 FA模型:需要在config.json中声明权限,示例:
{"module": {"package": "ohos.demo.kitframework","deviceType": ["phone", "tv","tablet", "car","smartWatch","sportsWatch","smartCamera", "smartVision"],"reqPermissions": [{"name": "ohos.permission.INSTALL_BUNDLE","reason": "install bundle","usedScene": {"ability": ["KitFramework"],"when": "always"}},{"name": "ohos.permission.LISTEN_BUNDLE_CHANGE","reason": "install bundle","usedScene": {"ability": ["KitFramework"],"when": "always"}},{"name": "ohos.permission.GET_BUNDLE_INFO","reason": "install bundle","usedScene": {"ability": ["KitFramework"],"when": "always"}}]}
}

Stage模型:需要在module.json5中声明权限,示例:

{"module": {"requestPermissions": [{"name": "ohos.permission.INSTALL_BUNDLE","reason": "install bundle","usedScene": {"ability": ["KitFramework"],"when": "always"}},{"name": "ohos.permission.LISTEN_BUNDLE_CHANGE","reason": "install bundle","usedScene": {"ability": ["KitFramework"],"when": "always"}},{"name": "ohos.permission.GET_BUNDLE_INFO","reason": "install bundle","usedScene": {"ability": ["KitFramework"],"when": "always"}}]}
}
  1. 当包管理器开发应用安装功能接口时,会调用权限管理相关接口检查自身是否具有安装应用程序的权限,例如:以安装应用的权限名"ohos.permission.INSTALL_BUNDLE"作为入参,调用CheckPermission接口检查包管理器是否具有安装应用的权限,如果有权限,安装流程继续执行,否则返回安装失败。

    constexpr static char PERMISSION_INSTALL_BUNDLE[] = "ohos.permission.INSTALL_BUNDLE";bool Install(const char *hapPath, const InstallParam *installParam, InstallerCallback installerCallback)
    {if ((hapPath == nullptr) || (installerCallback == nullptr) || (installParam == nullptr)) {HILOG_ERROR(HILOG_MODULE_APP, "BundleManager install failed due to nullptr parameters");return false;}// 检查ohos.permission.INSTALL_BUNDLE权限是否被授予。if (CheckPermission(0, static_cast<const char *>(PERMISSION_INSTALL_BUNDLE)) != GRANTED) {HILOG_ERROR(HILOG_MODULE_APP, "BundleManager install failed due to permission denied");return false;  // 返回安装失败。}// 安装流程。...
    }
    
关键字:合同管理系统_怎么做网络推广赚佣金_关于普通话的手抄报_历下区百度seo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: