前天遇到个奇怪的问题,也不奇怪。
就是在扫码界面请求拍照权限,请求权限弹窗始终不会出来。
一路debug进去,发现是activity类下的
public final void requestPermissions(@NonNull String[] permissions, int requestCode) { if (mHasCurrentPermissionsRequest) { Log.w(TAG, "Can reqeust only one set of permissions at a time"); // Dispatch the callback with empty arrays which means a cancellation. onRequestPermissionsResult(requestCode, new String[0], new int[0]); return; } Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); mHasCurrentPermissionsRequest = true; }此方法里的mHasCurrentPermissionsRequest为true,log显示也是 Can request only one set of permissions at a time。一次只能请求一组权限。
问题是我就单单请求了一个拍照权限,没有同时多次请求
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISSION_CAMERA_CODE); } }无奈,只好各种调试,发现在其他界面是可以正常调起来,总结下就是requestPermissions方法的第一个参数有问题。
但是看了半天activity类,还是没看懂mHasCurrentPermissionsRequest这个变量是怎么就被赋值为true了。
求哪位大神阅读这块的源码可以给个正确的解释,跪谢!!!