百度地图调用 keytool 错误:java.lang.Exception: 密钥库文件不存在、getLocType 167(4.9E-324)错误


使用as学习百度地图调用中,我遇到了keytool 错误:java.lang.Exception: 密钥库文件不存在、getLocType 167错误、getAddress 为null 、定位成功(经纬度获取正确)地图却没有显示正确的地址等问题,下面介绍本人的解决办法。最后附有源码地址

1. keytool 错误:java.lang.Exception: 密钥库文件不存在

使用百度地图官方说明 :keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey (注意目录选择、开发版本、发布版本等问题)

出现了:
在这里插入图片描述
keytool 错误:java.lang.Exception: 密钥库文件不存在,显然是当前路劲下没有debug.keystore ,这里是因为此处写的路劲的为相对路劲~/.android/debug.keystore。解决办法有两个,第一,到官方说明指定的目录下执行此命令。第二,使用绝对路劲。

在这里说明一下第二种方式:
a. 首先电脑中找到debug.keystore文件(这里使用到了搜索工具Everything,同学推荐的挺好用,没有的话直接使用windows自带的搜索工具(速度可能会比较慢))

在这里插入图片描述

b. 复制路径后,回到Terminal中使用
keytool -list -v -keystore E:\Android\Sdk\AndroidAVD.android/debug.keystore -alias androiddebugkey 即可输入密码(默认密码:android)
在这里插入图片描述

2.getLocType:167 错误 获取坐标(4.9E-324)

此错误原因为应用没有定位权限、或者GPS功能(网络定位为没有网络)未打开等等。

说明在android6.0之后的版本中

解决办法动态申请权限:

 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED
                || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED
                || ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_PHONE_STATE},1);
            LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
            if(!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
                // 未打开位置开关,可能导致定位失败或定位不准,提示用户或做相应处理
                Toast.makeText(this , "未打开位置开关",Toast.LENGTH_LONG).show();
            }
        }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 1 :
                if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
                    Toast.makeText(this,"3没有定位权限",Toast.LENGTH_LONG)
                            .show();
                if (grantResults[0] !=PackageManager.PERMISSION_GRANTED){
                    Toast.makeText(this,"1没有定位权限",Toast.LENGTH_LONG)
                            .show();

                }

        }
    }

代码详细结构可参考:github地址

3.getAddress 为 null

原因在mBaiduMap没有设置需要地址信息

// 可选,是否需要地址信息
        option.setIsNeedAddress(true);

4.定位成功(经纬度获取正确)地图却没有显示正确的地址等问题

		//将地址定向到此地址 
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));

查看代码结构可参考(交作业):源码地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值