国产权限的血与泪

作者: 键盘上的麒麟臂 | 来源:发表于2020-04-20 21:06 被阅读0次

    其实也不是什么大的BUG,但是我觉得有必要记录一下国产手机的一些细节吧,被一些神奇的权限搞得是真的蛋疼。

    一. 获取应用列表权限

    事情是这样的,有一次,突然要写个跳转微信的功能,但是我一般会先做一步判断,先判断手机是否已经安装了微信,安装了才跳转,没安装就直接提示用户。
    结果自己测试的时候是使用小米手机测的没问题,但是提交给测试进行测试的时候华为手机就出现了问题,没办法正常跳转微信。
    经过一番调试之后,返现是判断是否安装微信那里出了问题,明明有安装微信,但是却检查不到。

     List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
    

    就是用以上的代码获取应用列表,结果获取不到,竟然一番调试,发现竟然是这个“获取应用列表权限”的问题,有些手机这个权限默认是同意,有些厂商的手机默认是拒绝。
    然而最重点的地方来了,按照我们正常的思想,我们肯定是想可以判断这个权限是否获取,没获取的话去申请这个权限,哪怕是动态申请。
    然而问题就在于这个权限不是官方的权限,是没法动态申请的。

    我不知道有没有更好的解决方案,我自己是有两个思路,第一,单独对这些厂商做适配,跳转到权限申请的页面,让用户自己手动点同意,但我感觉这不是一个好的解决方法,无论从哪个方面来说。第二,跳转的时候,不做判断应用是否安装,直接加异常捕获,我自己是这样做的,虽然这个方案也感觉不太好,但至少是比第一个方法好些。

    二. 后台弹出页面权限

    事情是这样的,又有一次,突然要写一个跳转安装页面的功能,结果测试老铁说,当应用切后台之后,下载完应用无法跳转安装页面。
    我寻思着不可能啊,N年前我也试过,在后台也是能Intent的啊,结果自己拿来测试一看,哎呦,还真在后台Intent没反应,经过一番调试,返现是跟一个“后台弹出页面权限”有关。
    我的是小米手机,结果我找到了这个


    虽然是一张旧图,但是也能大概看出了问题所在。
    那么关于这个问题,我的方法就只有做一个lazy操作,在返回页面的时候,生命周期能监听到,再做跳转的操作

    三. 总结

    所以说,光这个国产权限的问题,确实让开发者头疼,开发时碰到的就两个了,没准又还有其它没发现的呢。
    这些限制对于用户来说确实是加强了用户体验,就像图中所说的,他能防止流氓软件疯狂弹页面,但是对开发者来说确实有点蛋疼,我们是良民好吗,也被限制在门外了,加白名单确实是一个做法,那不是要对限制的厂商都去申请白名单吗。
    目前我的做法就是只能用一些逻辑代码去绕过这些问题,具体的问题具体操作,如果有哪位大佬有好一些的解决方法,希望能够指点一下。
    最后就是关于如果你在开发过程中碰到一些问题是部分厂商出现,部分厂商正常的话,可以往权限这个方向考虑,是不是权限这些问题引起的。

    相关文章

      网友评论

        本文标题:国产权限的血与泪

        本文链接:https://www.haomeiwen.com/subject/ciajihtx.html