高德地图踩坑INVALID_USER_SCODE-无法获取定位信息

跟着大佬的博客做高德地图:Android 高德地图API(新版)-CSDN博客,结果踩坑了,报错信息如下:

上面写着:请在高德开放平台官网中搜索”INVALID. USER_ SCODE "相关内容进行解诀,然后我就去看了,INVALID. USER_ SCODE信息如下图:看完我就专门去检查了一遍,发现发布版安全码SHA1和调试版安全码SHA1完全对的上,没有空格,也没有任何错误。然后我又去检查权限有没有给,检查完后发现也没问题。

在我的不懈努力下,找来一个大佬帮忙,然后发现可能是jdk的问题,我的是jdk17。上文大佬提及的调试版安全码SHA1是在c盘目录下用这个命令获取的:

keytool -list -v -keystore debug.keystore

我之前的也是在这里获取的,但是运行出来的,依然无法获取定位信息。在另一个大佬的指导下,说出了这种情况:可能因为jdk版本的问题,应该不是在c盘那个.android目录下获取了,可能是由jks文件来获取这个调试版安全码。结果成功了,如图所示:

                                                 

解决方法:

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 (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

通过此代码把日志获取到的SHA1值写在调试版安全码SHA1即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值