hongyangAndroid / MPermissions

a easy API to use runtime permission for Android M
Apache License 2.0
976 stars 209 forks source link

无法监听获取权限失败的情况 #8

Open lvtanxi opened 8 years ago

lvtanxi commented 8 years ago

我下载demo进行测试(小米note pro),在申请权限(读取联系人)我点击拒绝的时候还是不能走到授权失败的方法中去。

hongyangAndroid commented 8 years ago

你好,小米note pro具体的版本是?因为小米本身自带权限管理,据我目前所了解不管是6.0或者6.0以下,都无法看到android自带的授权框。

行为如下:

申请权限,默认全部同意(android原生权限管理),然后当你执行具体涉及到权限的操作时,会弹出其自带权限管理,这个也有拒绝和同意,但是是不会回调编写的代码的。

lvtanxi commented 8 years ago

我的手机是小米note pro顶配,系统是MIUI7.2.4,android版本是5.1.1LMY47V。我在魅族手机MX4上测试也是这样的。魅族系统Flyme os 5.6.4.12 beta ,android版本是5.1.1;两部手机都是带有权限管理工具。 我的操作如下: 点击获取通讯录权限按钮->手机弹出授权提示框>选择拒绝->进去授权成功的方法->我查询通讯录cursor.getCount()==0; 我的理解是,我在代码中注册了两个方法,一个success一个fail;来对应同意和拒绝的情况。如果是因为手机自身带了权限管理而无法进行代码回调的话?success应该也不会回调吧?或者是因为我手机系统不是6.0或者更高?某些方法无法满足?

hongyangAndroid commented 8 years ago

这个主要适用于6.+的版本,6.0以下的版本都是直接到success的逻辑,至于授权框都不是android原生的,都是你所使用的系统自带的,此外点击同意和拒绝和你编写的回调代码基本无关。

lvtanxi commented 8 years ago

OK,谢谢。还想请教一写关于MVP模式的问题: 1、Presenter通过接口的方式提高了代码的复用性,降低了耦合度,但是如果业务非常复杂的时候Presenter层会不会也会像MVC模式中的Activity一样显得很臃肿。

2、Presenter既然负责完成View于Model间的交互,那么它的生命周期怎么去控制。

3、Presenter层的出现,虽然降低了耦合度,但是相对于MVC来说代码量会增加部分(对每个界面的把控难度也增加了,因为你要些接口,必然要清楚这个界面应该做的事情),应该怎么去提高开发效率。

4、Presenter在与View交互的时候,如果这个界面是一个表单界面,字段又很多的情况下View与Presenter之间又怎么去交互。