EO中如何配置,请求系统权限时弹出使用相关权限的说明。
主要针对部分应用商店apk上架时,要求申请手机权限要对申请的权限做出相关使用场景的说明。
//初始化EffectOneSdk EffectOneSdk.run { isDebugMode = BuildConfig.DEBUG imageLoader = DefaultImageLoader() logger = DebugLogger() modelPath = EOResourceManager.getModelRootPath() photoEditingMode = PhotoEditingMode.MODE_PICTURE immersionBar = DefaultImmersionBar() permissionFactory = PermissionWithDescDlgFactory() }
IPermissionFactory接口类并实现对应的接口class PermissionWithDescDlgFactory: IPermissionFactory { override fun createPermission(scene: Scene): List<String> { //TODO 根据使用场景构建申请的权限列表 } //触发时机:在调用系统API request 请求系统权限前调用该方法 override fun showPermissionDescriptionDlg(context: Context, permissions: List<String>) { //TODO 创建显示自定义的dlg弹窗 } //触发时机:在收到请求权限前结果后调用该方法 override fun hidePermissionDescriptionDlg() { //TODO 隐藏自定义的dlg弹窗 } }
Android 申请系统权限,无法得知当前是否能(可)显示系统权限弹窗。
Android 申请系统权限,用户不手动点击系统弹出的权限的允许(拒绝)时,是无法触onRequestPermissionsResult权限申请结果回调。
针对上面两点会遇到的问题:已经拒绝权限的情况下无法判断出是否该显示弹窗,会有先显示弹窗,收到已经拒绝权限后再隐藏弹窗闪一下的情况。
针对上面两点会遇到的问题,目前SDK的弹窗工厂类PermissionWithDescDlgFactory实现的方式是根据经验采用延时判断的方式来处理已经拒绝的情况(默认已拒绝时,系统的api会立即返回请求权限结果)。如果要自定义的话需要格外注意此中情况要自己去实现处理。