其他配置注意事项 最后更新时间: 2024年10月16日
1. 添加高德Key
需要将您刚申请的高德 Key 配置到项目中,打开项目的 “AndroidManifest.xml” 文件中,在application标签下添加一个 meta-data 标签,并填入之前申请好的key,如下:
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="请输入您的用户Key"/>
……
</application>
2. 声明定位 service 组件
如果您的项目中使用了高德定位sdk,那么为了保证定位sdk功能正常使用,需在 AndroidManifest.xml 中声明定位 service 组件。请在application标签中声明service 组件,添加如下代码:
<service android:name="com.amap.api.location.APSService"/>
3. 配置权限
Android 6.0及以上系统可以参考 Android 6.0权限说明章节。
请在 AndroidManifest.xml中配置权限,代码如下:
<!--允许访问网络,必选权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许获取精确位置,实时导航为必选-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--允许获取粗略位置,实时导航为必选-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--允许获取网络状态,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许获取wifi网络信息,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许获取wifi状态改变,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--后台获取位置信息,若需后台定位或持续导航则必选-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!--用于申请调用A-GPS模块,卫星定位加速-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--允许写入扩展存储,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用于用户链接蓝牙时,在导航组件页面的蓝牙连接提醒,建立链接后开发者可选用蓝牙通道进行tts播报-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!--用与导航状态中保持屏幕常亮-->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!--允许写设备缓存,用于问题排查-->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!--允许读设备等信息,用于问题排查-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
4. 隐私合规接口说明
1.导航的合规接口说明如下:
/**
* 设置包含隐私政策,并展示用户授权弹窗 必须在AMapNavi.getInstance(context)实例化之前调用
*
* @param context
* @param isContains: 隐私权政策是否包含高德开平隐私权政策 true是包含
* @param isShow: 隐私权政策是否弹窗展示告知用户 true是展示
* @since 8.1.0
*/
public static void updatePrivacyShow(Context context, boolean isContains, boolean isShow);
/**
* 设置是否同意用户授权政策 <b>必须在AMapNavi.getInstance(context)实例化之前调用</b>
* @param context
* @param isAgree:隐私权政策是否取得用户同意 true是用户同意
*
* @since 8.1.0
*/
public static void updatePrivacyAgree(Context context, boolean isAgree) ;
2.在调用AMapNavi.getInstance 之前必须进行合规检查,设置接口之前保证隐私政策合规,检查接口如下:
NaviSetting.updatePrivacyShow(context, true, true);
NaviSetting.updatePrivacyAgree(context, true);
3.在AMapNavi.getInstance调用时要捕获异常信息,具体方式可参考如下:
try {
mAMapNavi = AMapNavi.getInstance(getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
4.并在使用mAMapNavi的时候,请进行空指针判断,确保可以使用;
if (mAMapNavi != null){
// TODO
}
5.个人及设备信息采集设置
/**
* 基础库设置是否允许采集个人及设备信息
* @param collectEnable: true 允许采集 false 不允许采集
*/
AMapUtilCoreApi.setCollectInfoEnable(boolean collectEnable);
6. 代码混淆
在生成 apk 进行代码混淆时,请对混淆配置文件 proguard-rules.pro 添加如下配置(如果报出 warning,在报出 warning 的包加入类似的语句:-dontwarn 包名)
#2D地图:
-keep class com.amap.api.maps2d.**{*;}
-keep class com.amap.api.mapcore2d.**{*;}
#3D地图 V5.0.0之前:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.amap.mapcore.*{*;}
-keep class com.amap.api.trace.**{*;}
#3D地图 V5.0.0之后:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.**{*;}
-keep class com.amap.api.trace.**{*;}
#定位:
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}
#搜索:
-keep class com.amap.api.services.**{*;}
#导航 V7.3.0以前:
-keep class com.amap.api.navi.**{*;}
-keep class com.alibaba.idst.nls.** {*;}
-keep class com.nlspeech.nlscodec.** {*;}
-keep class com.google.**{*;}
#导航 V7.3.0及以后:
-keep class com.amap.api.navi.**{*;}
-keep class com.alibaba.mit.alitts.*{*;}
-keep class com.google.**{*;}
#导航 V8.1.0及以后:
-keep class com.amap.api.navi.**{*;}
-keep class com.alibaba.idst.nui.* {*;}
-keep class com.google.**{*;}