Cómo obtener URI de Drawable

Estoy trabajando en una aplicación de Android en la que entregar algunas imágenes incorporadas y dar al usuario la opción de descargar un poco más de la web para utilizar en la aplicación. En algún punto de mi aplicación, miro un ImageView en mi diseño y quiero determinar si el interior Drawable es un recurso incorporado o una imagen que he descargado de la web a la tarjeta SD.

¿Hay alguna manera de extraer el URI del Drawable utilizado en el ImageView? De esta manera sería capaz de ver si es un recurso o un archivo descargado.

Aquí está mi código hasta ahora:

ImageView view = (ImageView) layout.findViewById(R.id.content_img); Drawable image = view.getDrawable(); 

ACTUALIZACIÓN: Utilizando la sugerencia de Barry Fruitman de abajo, almacené el URI de la imagen directamente dentro de mi ImageView personalizado para uso posterior. Así es como se ve mi implementación:

 public class MemoryImageView extends ImageView { private String storedUri = null; public MemoryImageView(Context context, String Uri) { super(context); } public MemoryImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MemoryImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public String getStoredUri() { return storedUri; } public void setStoredUri(String storedUri) { this.storedUri = storedUri; } 

}

Y el uso se parece a esto:

 MemoryImageView view = (MemoryImageView) layout.findViewById(R.id.content_img); String img = view.getStoredUri(); if(img.startsWith("android.resource")) { //in-built resource } else { //downloaded image } 

No. Una vez que cree el Drawable, esa información se pierde. Lo que sugiero que hagas es subclase el ImageView y agrega miembros adicionales para realizar un seguimiento de lo que quieras.

Reemplazar:

 <ImageView /> 

con

 <com.mypackage.MyImageView /> 

Y crear:

 class MyImageView extends ImageView { protected final int LOCAL_IMAGE = 1; protected final int REMOTE_IMAGE = 2; protected int imageType; } 

MyImageView se comportará exactamente como un ImageView, pero con ese miembro adicional que puede leer y escribir en cualquier lugar que desee. Probablemente también tendrá que reemplazar el constructor ImageView con constructores que simplemente llaman super ().

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.