关于打包apk后在android 6.0 以上系统无法覆盖安装的坑

来源:互联网 发布:淘宝客推广加权重吗 编辑:程序博客网 时间:2024/05/17 00:17

这个坑的由来要从我的上个项目说起了,当时年少无知,开发直接用最高的sdk 23.0.0 target sdk也是23

后来发现把用最新的sdk开发在android 6.0的系统上安装的应用,默认的所有权限都是关闭的,要主动去申请

这就带来了很多麻烦,你必须在每次去使用这个权限的时候都去检查一下,权限是否开启,否则就可能会带来很多的麻烦,甚至是crash,作为一个有经验的开发人员,怎么能允许这种事情发生呢?

刚开始以为是android 6.0 的系统问题,后来发现,我之前开发的另一个项目在eclipse上的项目,用的sdk是18的

apk安装在6.0的系统上,默认所有权限就开启的。于是才发现是sdk 23 给我带来的坑。

于是就把sdk版本换成了21.0.1,从此不再烦恼。


可惜这仅仅是坑的开始,就在今天早上,我们新的版本刚上线,很多用户反应apk无法正常覆盖安装

在检查了签名没有问题之后,我一口老血喷在屏幕上。。。这怎么可能,为什么无法覆盖安装

亲自测试之后发现确实存在这样的问题。。。心中一万个草泥马奔腾而过


冷静之后我开始找原因,发现他们都有个共同点,就是都是android 6.0 以上的系统

而且我发现,用我好久以前的一个包,去覆盖安装竟然没有问题。

研究了半天,发现了问题的所在,凡是不能覆盖安装的,apk都提示新增了xxx一系列权限,

而安装成功的就没有提示新增的权限。于是我边猜测是因为上个版本默认安装是没有申请权限的,

而这个版本改成了所有权限都有,应该是权限导致的坑。


抱着试一试的态度,我把target sdk改成了23,问题竟然解决了。。。

然后另一个问题又浮出水面了,就是应用所有的权限,默认又是关闭的了。

关于权限的处理,google也给出了相应的api,可以去请求权限

这里我觉得这篇文章写的还是不错的

http://www.thinkphp.cn/topic/34621.html

这个方法只能在用户没有禁止询问权限的时候有用,当被禁止之后就没有效果了

我们就只能通过引导用户去设置权限的方式解决,可以参考本人的另一篇博客

http://blog.csdn.net/vinomvp/article/details/52228377

时间不早了,就到这吧~~

0 0