Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


GetRealPathFromURI () no funciona con imágenes basadas en ICS y Picasa

Estoy intentando conseguir la trayectoria local de una imagen para cargarla a un servidor. Cuando se utiliza pre ICS obtendría una ruta estándar dentro del dispositivo android a través de getRealPathFromURI(theURI)

Sin embargo, con ICS URI contendrá un uriString como algo como: content://com.google.android.gallery3d.provider/picasa/item/12312312312312 .

Y ejecutar getRealPathFromURI(theURI) devuelve null

¿Necesito ahora extraer la uriString anterior y descargar manualmente la imagen a través de la API (si detecto que es una imagen de la galería de Picasa) en lugar de una almacenada localmente? O estoy perdiendo algo por completo?

Gracias por cualquier consejo

EDITAR:

Parece que estaba buscando en la pregunta equivocada …

Encontré el problema en el siguiente enlace … que es más o menos lo que esperaba que tendría que hacer. Bastante molesto google / android no manejar esto más elegante.

Para manejar apropiadamente la búsqueda de una imagen de la Galería necesita manejar tres escenarios:

  1. El usuario seleccionó un archivo de imagen local

  2. El usuario seleccionó una imagen de Picasa y el dispositivo está ejecutando la versión de Android anterior a 3.0

  3. El usuario seleccionó una imagen de Picasa y el dispositivo está ejecutando Android versión 3.0 y superior

How to get Picasa images using the Image Picker on Android devices running any OS version

    One Solution collect form web for “GetRealPathFromURI () no funciona con imágenes basadas en ICS y Picasa”

    Eso es lo que descubrí en el dispositivo que ejecuta Android 4.0 o superior.

    El ICS URI que usted dio como ejemplo es un URI con el contenido: // esquema, por lo que debe ser un ContentProvider responsable de eso. Por lo tanto, ¿cuál es el uso de los trucos que getRealPathFromURI () utiliza? Sólo deje que ContentResolver hacer este trabajo para usted:

     InputStream inStream = getContentResolver().openInputStream(theUri); Bitmap bitmap = BitmapFactory.decodeStream(is); 
      FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.