集成高德地图 总结

最近项目用到了附近位置搜索功能,以及定位功能,我就去申请了   高德地图sdk 踩了很对坑,记录下,方便下次用;

一.申请账号 创建应用 获取key

如果你还没有申请 高德开放平台账号,那么就需要你去申请一个;申请完后,

1、点击创建新应用,去创建应用:

输入应用名称,选择应用类型,创建应用:

如图这就是我创建的应用:

2、点击 添加新key 创建key:

此时要注意了,一定要一步步的获取所对应的值:  输入Key名称,选择绑定的服务(此处为“Android平台”),输入发布版安全码 SHA1、调试版安全码 SHA1、以及 PackageName ;

3、获取发布版安全码SHA1:

第一种方式:

1.打开Android Studio的Terminal工具(在AndroidStudio下方)

2.输入命令:keytool -v -list -keystore  你应用的keystore文件名称

3.输入Keystore密码


第二种方式:

1.打开  你应用的keystore文件 所在的文件夹,在此文件夹下打开命令行窗口

2. 输入命令:keytool -v -list -keystore 你应用的keystore文件名称

3.会提示(输入密钥库口令): 输入Keystore密码

如图:

把对应的SHA1输入到 发布版安全码 SHA1 中,注意:区分大小写,不能有空格;

4、获取调试版安全码SHA1:

1.在用户文件夹下找到.android文件夹,找到debug.keystore文件,在.android此文件夹下打开命令行窗口

2. 输入命令:keytool -v -list -keystore debug.keystore

3.会提示(输入密钥库口令): 直接点击 Enter就可以

 

将SHA1输入到 调试版安全码 SHA1;

在清单文件获取包名 :

注意:

1、Key注册时填写的包名应该与AndroidManifest.xml配置文件的package属性内容相一致,如不一致请调整。

2、Android Studio开发者请注意调整build.gradle文件的applicationid与package一致,如不一致将会导致鉴权失败。

3、请注意检查包名的大小写是否统一。

提交成功后就可以了;

二,获取sdk,配置项目代码

1、获取SDK:到官网下载高德SDK 下载地址

注意:这里你可以选择   Android定位SDK 一键下载,  也可以根据项目需求选择下载,因为我的项目中用到定位和搜索功能,我选择了这两个(这样可以大大减小包的体积),建议根据项目需求选择下载  如图:

2、将 下载的地图 SDK 的 jar包复制到工程的 libs 目录下

如果你选择了3D地图,会有SO库,  在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下;

3、在清单文件里配置 对应的权限,服务和key值

配置权限

<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>

如果你的项目中需要定位功能,需要配置服务:

  <!-- 定位需要的服务 -->
  <service android:name="com.amap.api.location.APSService"/>

配置key

 <!--高德地图key-->
 <meta-data
     android:name="com.amap.api.v2.apikey"
     android:value="你申请的key值"/>

注意:这儿的name 值 就是  com.amap.api.v2.apikey   不是你设置的keyn名称值(ps:我以为是我设置的key名称,一直报key不存在错误,好久才解决,一个大坑)

这样配置就好了,你可以去用了;

配置好后,你可以验证下你的SHA1是不是正确:

程序中添加以下代码段获取当前APK使用的签明文件SHA1

public static String sHA1(Context context) {
    try {
        PackageInfo info = context.getPackageManager().getPackageInfo(
            context.getPackageName(), PackageManager.GET_SIGNATURES);
        byte[] cert = info.signatures[0].toByteArray();
        MessageDigest md = MessageDigest.getInstance("SHA1");
        byte[] publicKey = md.digest(cert);
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < publicKey.length; i++) {
            String appendString = Integer.toHexString(0xFF & publicKey[i])
                .toUpperCase(Locale.US);
            if (appendString.length() == 1)
                hexString.append("0");
                hexString.append(appendString);
                hexString.append(":");
        }
        String result = hexString.toString();
        return result.substring(0, result.length()-1);
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return null;
}

此代码获取的SHA1值是否与你所配置的SHA1值匹配(debug或者release至少有一个与代码获取的SHA1一致),请注意不能带有空格,SHA1严格校验大小写;

如果你在 使用中 报 返回INVALID_USER_SCODE 或者错误码: 7(KEY鉴权失败)   32(Key鉴权验证失败)  1002(用户Key不正确或过期),就去看下

1.在AndroidManifest.xml的application标签中配置Key是否正确;

2.申请key时SHA1是否获取正确;

好了,高德地图集成完成了,可以去使用了;

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值