android - 下载后从谷歌照片库中检索图像

标签 android image google-photos

我正在启动从图库中获取照片的 Intent ,当我在我的图库中使用 nexus google photo 应用程序时,一切正常。

但如果图片不在手机上(在 Google 相册在线服务上),它会为我下载。选择图像后,我将图像发送到另一个 Activity 进行裁剪,但在下载的情况下,发送到裁剪 Activity 的图像为空,因为下载尚未完成。

我如何知道下载完成后将图像发送到裁剪 Activity ?

这是我的代码:

private void pickFromGallery()
{
    Intent galleryIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    try {
        // When an Image is picked
        if (requestCode == RESULT_LOAD_IMG && resultCode == Activity.RESULT_OK
                && null != data) {
            // Get the Image from data

            Uri selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            // Get the cursor
            Cursor cursor = getApplicationContext().getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            // Move to first row
            assert cursor != null;
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            imgDecodableString = cursor.getString(columnIndex);
            cursor.close();
            startCrop(imgDecodableString);
        }
    } catch (Exception e) {
        Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG)
                .show();
    }
    }

如有任何帮助,我们将不胜感激。

最佳答案

我认为当您从 google photos 下载所选图像时无法裁剪图像。您只能裁剪本地存储图像

但要检查所选图像是否可下载或来自本地存储,您可以在 onActivityResult() 方法中这样做。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMG && resultCode == Activity.RESULT_OK
                && null != data) {

                Uri selectedImageUri = data.getData();
                String tempPath = getPath(selectedImageUri, getActivity());
                String url = data.getData().toString();
                if (url.startsWith("content://com.google.android.apps.photos.content")){
                    try {
                        InputStream is = getActivity().getContentResolver().openInputStream(selectedImageUri);
                        if (is != null) {
                            Bitmap pictureBitmap = BitmapFactory.decodeStream(is);
                            //You can use this bitmap according to your purpose or Set bitmap to imageview
                        }
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }else {
                     startCrop(tempPath);

             }
         }

}

这是 onActivityResult() 中使用的 getPath() 方法。

public String getPath(Uri uri, Activity activity) {
    Cursor cursor = null;
    try {
        String[] projection = {MediaStore.MediaColumns.DATA};
        cursor = activity.getContentResolver().query(uri, projection, null, null, null);
        if (cursor.moveToFirst()) {
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
            return cursor.getString(column_index);
        }
    } catch (Exception e) {
    } finally {
        cursor.close();
    }
    return "";
}

希望对你有帮助。

关于android - 下载后从谷歌照片库中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599055/

相关文章:

android - 我如何用 fragment 布局填充我的内容布局

android - 在 Android 中不使用外部邮件客户端发送邮件

python - 使用 Python 进行图像旋转

google-api - 如何从 Google Picker v3 中使用 `id` 从 Google Photo 下载原始图像

android - 使用新的 Google 相册应用选择照片已损坏

android - 在 `Thread.setDefaultUncaughtExceptionHandler` 中显示一个对话框

android - 从android gradle插件获取结果apk文件路径

javascript - jQuery 图片悬停效果

android - 创建文件或保存图像时如何检查android中的空间?

google-api - Google Photos API 导入我的所有照片