We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v3.10.8
能
单独拍照 - 拍照片模式下,行为正常,示例代码如下:
PictureSelector.create(this) .openCamera(SelectMimeType.ofImage()) // 塞入之前已选择好的图片数据(数据非空) .setSelectedData(selectedData) .forResult(new OnResultCallbackListener<LocalMedia>() { @Override public void onResult(ArrayList<LocalMedia> result) { // 这里行为正常 // 这里的 result 会包含之前已经选择好的图片数据 selectedData; } @Override public void onCancel() { } });
单独拍照 - 拍视频模式下,行为异常,示例代码如下:
PictureSelector.create(this) .openCamera(SelectMimeType.ofVideo()) // 塞入之前已选择好的视频数据(数据非空) .setSelectedData(selectedData) .forResult(new OnResultCallbackListener<LocalMedia>() { @Override public void onResult(ArrayList<LocalMedia> result) { // **不会回调到这里,会提示 “你最多只能选择1个视频”** } @Override public void onCancel() { } });
通过上面两个例子,可以看出 单独拍照,无论是单独拍视频,还是单独拍照片,API 调用都是一样的(区别在于参数不一样),在这种情况下,回调的逻辑也应该保持一致。否则调用方针对这里需要有不同的处理方式。实际上目前针对这里的行为逻辑是:同样的API调用方式,拍照片可以塞入已选择的数据,但拍视频不行,需要单独处理和适配
临时的解决方案就是,单独拍视频的时候,不调用 .setSelectedData(),而是在 onResult 回调的时候,将回调回来的数据添加到已选择的数据中: selectedData.addAll(result);
Demo 的复现路径:
The text was updated successfully, but these errors were encountered:
刚刚看了一下这块的源码逻辑,发现本质原因在于:单独拍照模式,实际上是默认有容量限制的,单独拍照片模式容量是 9,单独拍视频容量是 1。上述示例冲突的点在于 PictureSelectionCameraModel 可以调用 #setSelectedData 方法设置已选择的数据,但是没有暴露设置最大容量的API,导致默认的容量会跟传入的 selectedData 大小冲突。
PictureSelectionCameraModel
这里个人认为API设计方案有以下几种:
Sorry, something went wrong.
No branches or pull requests
Current use version?
当前使用的版本是多少?
Will this problem occur in demo?
Demo能否复现这问题?
Describe the problem or provide an error log?
描述问题或提供错误log?
单独拍照 - 拍照片模式下,行为正常,示例代码如下:
单独拍照 - 拍视频模式下,行为异常,示例代码如下:
通过上面两个例子,可以看出 单独拍照,无论是单独拍视频,还是单独拍照片,API 调用都是一样的(区别在于参数不一样),在这种情况下,回调的逻辑也应该保持一致。否则调用方针对这里需要有不同的处理方式。实际上目前针对这里的行为逻辑是:同样的API调用方式,拍照片可以塞入已选择的数据,但拍视频不行,需要单独处理和适配
临时的解决方案就是,单独拍视频的时候,不调用 .setSelectedData(),而是在 onResult 回调的时候,将回调回来的数据添加到已选择的数据中: selectedData.addAll(result);
Demo 的复现路径:
The text was updated successfully, but these errors were encountered: