此错误通常发生在从最近的文件夹中选择图像时
class com.bumptech.glide.load.engine.GlideException: Received null model
7gyucuyw1#
调用多个图像选择样本预览
Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); i.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); *gallery*.launch(i);
gallery基本上是startactivityforresult(i,123),onactivityresult方法不推荐使用,gallery是下面定义的备选方法
ActivityResultLauncher<Intent> gallery = choosePhotoFromGallery();
下面定义了ChoosePhotoOfRomGallery()方法
private ActivityResultLauncher<Intent> choosePhotoFromGallery() { return registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { try { if (result.getResultCode() == RESULT_OK) { if (null != result.getData()) { if (result.getData().getClipData() != null) { ClipData mClipData = result.getData().getClipData(); for (int i = 0; i < mClipData.getItemCount(); i++) { ClipData.Item item = mClipData.getItemAt(i); Uri uri = item.getUri(); String imageFilePathColumn = getPathFromURI(this, uri); productImagesList.add(imageFilePathColumn); } } else { if (result.getData().getData() != null) { Uri mImageUri = result.getData().getData(); String imageFilePathColumn = getPathFromURI(this, mImageUri); productImagesList.add(imageFilePathColumn); } } } else { showToast(this, "You haven't picked Image"); productImagesList.clear(); } } else { productImagesList.clear(); } } catch (Exception e) { e.printStackTrace(); showToast(this, "Something went wrong"); productImagesList.clear(); } }); }
getpathfromuri()是下面定义的方法
public String getPathFromURI(Context context, Uri contentUri) { OutputStream out; File file = getPath(); try { if (file.createNewFile()) { InputStream iStream = context != null ? context.getContentResolver().openInputStream(contentUri) : context.getContentResolver().openInputStream(contentUri); byte[] inputData = getBytes(iStream); out = new FileOutputStream(file); out.write(inputData); out.close(); return file.getAbsolutePath(); } } catch (IOException e) { e.printStackTrace(); } return null; } private byte[] getBytes(InputStream inputStream) throws IOException { ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } return byteBuffer.toByteArray(); }
getpath()是
private File getPath() { File folder = new File(Environment.getExternalStorageDirectory(), "Download"); if (!folder.exists()) { folder.mkdir(); } return new File(folder.getPath(), System.currentTimeMillis() + ".jpg"); }
1条答案
按热度按时间7gyucuyw1#
调用多个图像选择
样本预览
gallery基本上是startactivityforresult(i,123),onactivityresult方法不推荐使用,gallery是下面定义的备选方法
下面定义了ChoosePhotoOfRomGallery()方法
getpathfromuri()是下面定义的方法
getpath()是
提前谢谢你快乐编码