乐视、小米android 6.0+系统权限填坑之旅

项目做完二期之后测试发现在乐视6.0手机上程序无法运行但小米5完美运行,经排查发现有个接口需要获取手机的imei,而这个操作需要授予
READ_PHONE_STAT(获取手机状态) 权限,这个属于运行时权限需要动态授权,但是小米手机安装时自动授予该权限,而乐视手机需要用户手动授予,然后发现做这项目的哥们
所有的运行时权限都没有进行权限询问判断,尼玛,填那哥们留下的坑开始吧。
一、
READ_PHONE_STAT(获取手机状态) 权限
	这个很简单直接上图了
	二、在fragment中需要授予一个相机权限 CAMERA
	在fragment中动态授权和activity中授权有些区别但是也挺简单的直接上图了留意红线部分与上面的区别就ok了
	三、定位权限 LOCATION_SERVICE
	好吧,上边扯了点其他的,乐视和小米的区别就从这开始说了
	(1)小米授权有自己的一套安全中心授权(坑就在这)但是又依赖于android系统自己的授权,android系统正常流程是拟授予了权限那么
	onRequestPermissionsResult()方法会返回0拒绝会返回-1,但是小米给改了
	以下为小米的权限返回值:
	1.在安全中心设置成允许:返回值为0 即允许权限,可以正常操作
	2.在安全中心设置成拒绝:第一次返回值为-1,之后居然永远为0(明明未被允许为什么变成0了)
	3.设置成询问模式:第一次为-1 出现弹窗点击拒绝然后又永远返回为0了
	4.设置询问模式:第一次为-1 出现弹窗选择允许 永远返回为0 (正常)
	就好比说在小米手机上用户拒绝权限之后你再次去判断权限的授予状态,小米会给你个0骗你说通过了,通过你妹啊
	所以我们在检测运行时权限的同时还需要检测下Appops权限只有两者都处于通过的状态在小米上才是真正的授予了权限。
	如图:
	(2)说完小米又到了乐视手机在乐视手机上权限之后开启(允许)、关闭(拒绝)两种选项而不像是小米手机的拒绝、询问、允许
三种状态,那么还是在定位权限这,乐视手机默认该权限是出于关闭状态的(小米手机默认是询问状态,可以拉起授权,无以下问题),进入到定位功能下
,发现无法拉起授权,所以在这里还需要检测下定位权限是否是出于关闭状态,如果出于关闭状态则提示用户手动开启。具体方法上图中有。
	
	对了,当用户拒绝了权限并选择不再提示的时候,你再次去申请权限是无法拉起授权弹窗的,这个时候需要提示用户手动去设置里
开启该功能,或者代码给他跳过去。方法在相机权限那里有~。

	
	

你可能感兴趣的:(android,6.0权限)