今天写二维码的功能,涉及到摄像权限的动态申请。于是用到了easypermision
但是用到的是Fragment,发现onPermissionsGranted没有响应。问过同事后发现,他们用Activity时没有问题。onPermissionsGranted正常响应。
后来问了权限,逐句Log后发现了 问题所在。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, getActivity());
Log.e("xxx","=========11=======");
}
我原本在Fragment的onRequestPermissionsResult重现时 最后面的句柄用成了getActivity
应该是
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
Log.e("xxx","=========11=======");
}
究其原因:用getActivity时应该是Fragment的父Activity里的onPermissionsGranted响应
用This时候,作用在fragment本身,此时就是fragment自身的onPermissionsGranted响应