uniappx開發(fā)Android百度地圖插件時,報錯The location function has been stopped because you do not agree with the privacy compliance policy. Please recheck the setAgreePrivacy interface。
【安卓直接使用百度地圖同理,也是會報這個錯誤,解決方法是一樣的??!】
查詢官方文檔之后才發(fā)現(xiàn)再使用之前需要調用setAgreePrivacy
解決方案:為了進一步加強對最終用戶個人信息的安全保護措施,從定位SDK v9.2.9版本起,請開發(fā)者務必確保調用SDK任何接口前先調用隱私合規(guī)接口setAgreePrivacy,否則可能會無法正常使用相關功能。如下:
LocationClient.setAgreePrivacy(true);
我在uniappx中實現(xiàn)的方式是:
/**
* 更多插件開發(fā)的信息詳見: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);
//需要加上這句定位是同意隱私合規(guī)接口,否則定位時會報錯?。?!
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);
//當前應用是否 取得用戶同意隱私協(xié)議
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中的實現(xiàn)【和原生安卓調用的api是一樣的】,如下:
/**
* 更多插件開發(fā)的信息詳見: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任何接口前先調用更新隱私合規(guī)updatePrivacyShow、updatePrivacyAgree兩個接口并且參數(shù)值都為true,若未正確設置有崩潰風險
AMapLocationClient.updatePrivacyShow(UTSAndroid.getAppContext()!, true, true);
AMapLocationClient.updatePrivacyAgree(UTSAndroid.getAppContext()!, true);
}
}