Descargar la imagen de la nueva aplicación Google+ (más)

Recientemente, Google agregó la aplicación Fotos para Google+ (más) y aparece cuando inicia un intento de elegir una imagen. Sin embargo, si selecciono una imagen de Google+ Fotos e intento utilizarla en mi aplicación, ninguna de mi lógica actual puede devolver un URI u URL utilizable para obtener una imagen que pueda descargar y manipular. Actualmente utilizo los métodos "comunes" para tratar de manipular el URI que se puede encontrar aquí en Desbordamiento de pila y en otros lugares. Puedo proporcionar código si es necesario, pero en este momento creo que es un poco irrelevante ya que funciona bien para todo lo demás, excepto esta nueva aplicación. ¿Ideas sobre cómo obtener una imagen utilizable?

El URI se parece a lo siguiente:

content://com.google.android.apps.photos.content/0/https%3A%2F%2Flh5.googleusercontent.com%<a bunch of letters and numbers here> 

La información de MediaColumns.DATA devuelve siempre null y MediaColumns.DISPLAY_NAME devuelve siempre MediaColumns.DISPLAY_NAME sin importar lo que elija de la aplicación de Google Fotos. Si intento pegar todo desde https hasta el final en mi navegador, no aparece nada. No estoy seguro de cómo obtener información útil de esto.

Al recibir la intención de los datos, debe utilizar el contentResolver para obtener las fotos. Esto es lo que debe hacer:

 String url = intent.getData().toString(); Bitmap bitmap = null; InputStream is = null; if (url.startsWith("content://com.google.android.apps.photos.content")){ is = getContentResolver().openInputStream(Uri.parse(url)); bitmap = BitmapFactory.decodeStream(is); } 

Me enfrenté a problemas de selección de imágenes de la nueva aplicación de Google Fotos. Pude resolverlo por debajo del código.

Funciona para mí, básicamente lo que hice es comprobar si hay alguna autoridad está ahí o no en el contenido de URI. Si está allí estoy escribiendo al archivo temporal y la trayectoria de vuelta de esa imagen temporal. Puede omitir la parte de compresión mientras escribe en la imagen temporal

 public static String getImageUrlWithAuthority(Context context, Uri uri) { InputStream is = null; if (uri.getAuthority() != null) { try { is = context.getContentResolver().openInputStream(uri); Bitmap bmp = BitmapFactory.decodeStream(is); return writeToTempImageAndGetPathUri(context, bmp).toString(); } catch (FileNotFoundException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } public static Uri writeToTempImageAndGetPathUri(Context inContext, Bitmap inImage) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); return Uri.parse(path); } 

PS: He respondido a una pregunta similar aquí

Tienes que usar la proyección para obtener ImageColumns.DATA (o MediaColumns.DATA ):

 private String getRealPathFromURI(Uri contentURI) { // Projection makes ContentResolver to get needed columns only String[] medData = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(contentURI, medData, null, null, null); // this is how you can simply get Bitmap Bitmap bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), contentURI); // After using projection cursor will have needed DATA column cursor.moveToFirst(); final int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); return cursor.getString(idx); } 
  • Google Sign In no funciona después de publicado en playstore
  • Cómo obtener vídeos (no locales) de la aplicación Google Fotos
  • Plus.PeopleApi.getCurrentPerson devuelve null
  • Google inicia sesión y termina sesión en android con la última API de g-plus
  • ¿Cómo desconectar un usuario de Google en mi aplicación de Android en botón Haga clic en Java?
  • No se puede obtener un cumpleaños privado de la cuenta de Google Plus aunque se solicita explícitamente
  • Cómo salir completamente de google plus de diferentes actividades en android?
  • Android google signin y facebook inicio de sesión botón de mirar completamente diferente
  • ¿Cómo integrar Amazon Cognito con Google Plus para Android?
  • Google Android estilo de botón de inicio de sesión
  • Google plus para android: credenciales no válidas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.