跳到主要内容

自定义处理权限请求

自定义处理权限请求

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

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

拦截权限请求

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

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

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();
}
});