关于百度SDK的返回错误-"PERMISSION UNFINISHED"

先说一下我的情况,我集成了百度的定位SDK,然后定位能成功,但是不稳定,有时成功有时失败。我以为是网络问题,然后我开始使用POI检索功能,结果老是不行,也不蹦,但就是啥也获取不到,说的具体一点,是根本就没回调到给他设置的回调方法里,跑断点才知道,到了PoiSearch.newInstance()这里就会跳到一个handleMessage..xxx什么的方法里,根本不会往下执行了。

后来从网上看见有的说把搜索的代码:poiSearch.searchXxx()(像searchInCity())这个方法放在点击时间里才行。我觉得可能是newInstance这个方法需要一定时间吧,但是我的环境是定位和检索Poi(其实定位的时候会返回一个Poi信息集合,但是数量有限)是一下子显示的,那要怎么过度这个时间差呢,于是我把newInstance放在了Activity的onCreate方法里,但是必须在定位操作之前,因为定位操作需要时间,所以这个时间就省出来了。

你以为万事大吉了吗?非也。你会发现还是会返回PERMISSION UNFINISHED错误信息。

后来才知道,原来问题的所在在于,申请AK的时候用到的开发版SHA1和发布版SHA1是不一样的,比如我此时的版本是没有通过签名的版本,但是我集成AK的时候用的SHA1都是签名过的,所以就会出现这个错误。下面是android studio下获取不同版本SHA1的方法:

获取发布版SHA1:

使用android studio的Terminal编写命令:keytool -list -v  -keystore (这里写上你的keystore文件路径),然后输入你的keyStore的密码就会生成了。如果你没有配置JDK的系统变量,则先需要用“cd”命令进入JDK的bin目录下才能使用keytool。

获取开发版SHA1:

同样使用android studio的Terminal编写命令,只不过现在变成了keytool -v -list -keystore (这里写上你的debug.keystore文件路径,一般在系统盘的user文件夹下的.android文件夹中)。

你会发现生成的两个SHA1并不一样,把这两个SHA1分别填入申请AK的时候的SHA1不同版本输入框中重新生成AK,把这个AK放进manifest文件中即可。

参考文章:点击打开链接

你可能感兴趣的:(摸索)