【Android】IMKit 适配 申请敏感权限目的的 UI 展示

问题描述

:exclamation: 上架应用市场,会审核运行时权限,在申请敏感权限时,需在页面上同步告知用户申请该权限的目的。

APP在调用终端任意权限时,均需同步告知用户申请该权限的目的,包括但不限于申请权限的名称、服务的具体功能、用途;告知方式不限于弹窗、蒙层、浮窗、或者自定义操作系统权限弹框等,在服务场景实际发生时同步向用户告知调用权限的目的,让用户更清晰地了解权限用途,充分保障用户知情权,从而便于用户更明确地作出主动性选择,建议您可排查应用内所有权限申请行为,确保均符合要求。

具体参考链接 7.21
https://developer.huawei.com/consumer/cn/doc/app/50129-07

原因分析

IMKit sdk 在申请权限时,暂未提供申请敏感权限目的的 UI 展示。

解决方案

需要您调用 PermissionCheckUtil.setRequestPermissionListListener() 方法,此方法能够拦截 imkit 中的权限请求,在 onRequestPermissionList 回调中您来自定义处理权限请求。

confirmed 代表权限通过,cancelled 代表权限不通过。

代码示例:

PermissionCheckUtil.setRequestPermissionListListener(
new PermissionCheckUtil.IRequestPermissionListListener() {
    @Override
    public void onRequestPermissionList(
            Context activity,
            List<String> permissionsNotGranted,
            PermissionCheckUtil.IPermissionEventCallback callback) {
        AlertDialog dialog =
                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.confirmed();
                                    }
                                })
                        .setNegativeButton(
                                "取消",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(
                                            DialogInterface dialog, int which) {
                                        dialog.dismiss();
                                        callback.cancelled();
                                    }
                                })
                        .show();
    }
});

海外UIKit 适配申请敏感权限的 UI展示

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

链接

追踪记录

  • 工单号:185866
  • Jira 号:

更多支持

如有疑问,欢迎提交工单