android - 从谷歌驱动器获取图像时位图返回空
问题描述
我正在通过存储访问框架从谷歌驱动器获取图像并将其转换为位图。它在我在棉花糖上运行的 Galaxy A5 中运行良好,但在我在 Oreo 位图上运行的红米 6A 中返回为空。我的代码如下
uri = resultData.getData();
isImageFromGoogleDrive = "com.google.android.apps.docs.storage".equals(Objects.requireNonNull(uri).getAuthority());
if(isImageFromGoogleDrive){
InputStream inputStream;
try {
inputStream = getBaseContext().getContentResolver().openInputStream(uri);
Bitmap bm = BitmapFactory.decodeStream(inputStream);
红米6A Oreo上bm的值为空
解决方案
你可以这样做:
if (resultCode == RESULT_OK && requestCode == SELECT_IMAGE_REQUEST_CODE) {
Uri selectedImageUri = imageReturnedIntent.getData();
try (InputStream inputStream = sender.getContentResolver().openInputStream(selectedImageUri )) {
Files.copy(inputStream, "your_path_here", StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ex) {
Toast.makeText(sender, "A problem has occurred while importing image", Toast.LENGTH_SHORT).show();
Log.e(TAG, "error copying files:" + ex.getMessage());
return;
}
}
您不能像使用 SDCARD 中的一张图像那样只拍摄图像,因此您需要使用 Streams 将该文件复制到内存中(临时或非临时)。此代码会将图像复制到路径,然后你可以用它做你想做的事。
推荐阅读
- python - 如何聚合字典列表中的某些元素
- go - 如何在 Go 中将文件压缩为没有目录文件夹的 .zip
- excel - VBA代码在可见单元格中粘贴特殊值
- api - Twiitter python API 无法连接流式传输
- git - 尝试通过 SSH 克隆使用了错误的公钥
- ios - Swift - 如何确定 collectionView 的 scrollView.content.y?
- bash - 为什么以下字符串比较会返回不同的结果?
- r - Shiny:渲染输出时如何防止输入重复?
- python - 如何使用 Shopify Python API 包装器对结果进行分页
- python - 如何自定义pytorch数据