百度地图报错:do not agree with the pri

2025-01-17  本文已影响0人  见字如晤一

uniappx开发Android百度地图插件时,报错The location function has been stopped because you do not agree with the privacy compliance policy. Please recheck the setAgreePrivacy interface。
【安卓直接使用百度地图同理,也是会报这个错误,解决方法是一样的!!】
查询官方文档之后才发现再使用之前需要调用setAgreePrivacy

解决方案:为了进一步加强对最终用户个人信息的安全保护措施,从定位SDK v9.2.9版本起,请开发者务必确保调用SDK任何接口前先调用隐私合规接口setAgreePrivacy,否则可能会无法正常使用相关功能。如下:

LocationClient.setAgreePrivacy(true);

我在uniappx中实现的方式是:

/**
 * 更多插件开发的信息详见:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html
 */
export class AppHookProxy implements UTSAndroidHookProxy {
    override onCreate(application : Application) {
        // java 
        // 是否同意隐私政策,默认为false,但是必须设为true
        SDKInitializer.setAgreePrivacy(UTSAndroid.getAppContext(), true);
        //需要加上这句定位是同意隐私合规接口,否则定位时会报错!!!
        LocationClient.setAgreePrivacy(true);
        UTSAndroid.setPrivacyAgree(true)
        try {
            // 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
            SDKInitializer.initialize(UTSAndroid.getAppContext());
            //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
            //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
            SDKInitializer.setCoordType(CoordType.BD09LL);
            //当前应用是否 取得用户同意隐私协议
            if (UTSAndroid.isPrivacyAgree()) {
                //onCreate 初始化三方SDK
                console.log("AppHookProxy--onCreate---isPrivacyAgree")
                Log.e("AppHookProxy", "AppHookProxy--onCreate---isPrivacyAgree")
            }
        } catch (e : BaiduMapSDKException) {
            console.log("AppHookProxy BaiduMapSDKException", e)
        }

    }
}

同理,高德地图也需要设置,我这里只举出uniappx中的实现【和原生安卓调用的api是一样的】,如下:

/**
 * 更多插件开发的信息详见:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html
 */
export class AppHookProxy implements UTSAndroidHookProxy {
    override onCreate(application : Application) {
        console.log("GDAppHookProxy", "AppHookProxy--onCreate---", UTSAndroid.isPrivacyAgree())
        // 确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险
        AMapLocationClient.updatePrivacyShow(UTSAndroid.getAppContext()!, true, true);
        AMapLocationClient.updatePrivacyAgree(UTSAndroid.getAppContext()!, true);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读