跳到主要内容

自定义处理权限请求

自定义处理权限请求

Global IM UIKit 的会话页面提供了发送图片、语音、文件、发起通话等功能。在调用涉及敏感权限的 API 时,Global IM UIKit 均会向用户申请权限,在权限请求通过后,才会继续执行任务。

Global IM UIKit 并未开放与权限申请相关的 UI。如果应用程序需要自定义权限申请的 UI 界面,可以拦截 Global IM UIKit 的权限申请。例如,应用程序可以在 Global IM UIKit 申请敏感权限时,在自定义页面上同步告知用户申请该敏感权限的目的,满足上架应用市场的合规要求。

拦截权限请求​

建议在进入会话页面前,使用 ConfigCenter 获取 FeatureConfig, setPermissionInterceptor 方法设置权限请求监听器。在 PermissionInterceptor 的 onRequestPermission 回调中您来自定义处理权限请求。

权限处理完成后,通过 PermissionInterceptor 的 Callback 告知 Global IM UIKit 权限请求结果。onConfirm 代表权限通过,onCancel 代表权限不通过。

Java
ConfigCenter.getFeatureConfig().setPermissionInterceptor(new PermissionInterceptor() {
@Override
public void onRequestPermission(@NonNull Context activity, @NonNull List<String> permissionsNotGranted, @NonNull CallBack callback) {
new AlertDialog.Builder(
activity,
android.R
.style
.Theme_DeviceDefault_Light_Dialog_Alert)
.setMessage("向用户说明申请权限")
.setPositiveButton(
"去申请",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog, int which) {
dialog.dismiss();
callback.onConfirm();
}
})
.setNegativeButton(
"取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog, int which) {
dialog.dismiss();
callback.onCancel();
}
})
.show();
}
});