高德地图开发:关于“INVALID_USER_SCODE”问题的解决参考方案。

匿名 (未验证) 提交于 2019-12-03 00:26:01

在一个使用到高德地图的项目中出现了定位位置出现偏差的问题,参考高德官方api的解决方案,解决了问题。
根据调试出现的输入日记:

在高德地图官方网站上搜索相应的内容,得到参考的解决方案:
一、检查SHA1值:
1)检查SHA1的值:
(通过以下方法可以获取到对应的SHA1值,当然,也可以通过cmd控制台通过命令行的形式查看SHA1的值)

publicstatic 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; }

2)对比SHA1的值:在官网控制台里找到您使用的Key,查看其当前填写的SHA1值与第一步获取的SHA1值是否匹配(debug或者release至少有一个与第一步获取的SHA1一致),请注意不能带有空格,SHA1严格校验大小写。
二、检查包名:
1)Key注册时填写的包名应该与AndroidManifest.xml配置文件的package属性内容相一致,如不一致请调整。

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

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

Key值填写位置:

a.通过AndroidManifest.xml配置Key

<meta-data android:name="com.amap.api.v2.apikey" android:value="key" >//开发者申请的key </meta-data>

meta-data标签位置需要在application标签内部。

b.通过SDK提供的setApiKey(String key);接口设置Key,注意Key设置要在SDK业务初始化之前。

地图SDK的setApiKey(String key)方法在MapsInitializer类中。 搜索SDK的setApiKey(String key)方法在ServiceSettings类中。 定位SDK的setApiKey(String key)方法在AMapLocationClient类中。

通过检查SHA1的值与包名,确保两者都一致的情况下,“INVALID_USER_SCODE”问题应该就能解决了。
而在我自己的项目中的情况为:两个不同的账户,使用的同一个包名及两个不同的SHA1值在高德开发者平台的控制台申请生成了两个key,使用其中的一个key打包apk可以定位成功,但是使用另一个key替换之后,定位失败。最后,我们猜测是因为SHA1不一致引起的问题,在其中一个账户上删除申请的key。

参考:http://lbs.amap.com/faq/top/hot-questions/253/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!