Cómo pasar un array de Uri entre Activity usando Bundle

Necesito pasar una matriz de Uri a otra actividad, para pasar una matriz de String que uso simplemente

String[] images=getImagesPathString(); Bundle b = new Bundle(); b.putStringArray("images", images); 

Pero utilizando una matriz de Uri

  Uri[] imagesUri=getImagesUri(); 

Esto no funciona porque no hay un método "putUri (Uri x)" en Bundle

¿Cómo podría resolver este problema?

4 Solutions collect form web for “Cómo pasar un array de Uri entre Activity usando Bundle”

Debe buscar en la interfaz Parcelable para ver cómo pasar las cosas en una intención

http://developer.android.com/intl/es/reference/android/os/Parcelable.html

Tal vez usted puede implementar una clase ParcelableUri que implementa esa interfaz.

Como esto (no probado !!):

 public class ParcelableUri implements Parcelable { private Uri[] uris; public ParcelableUri(Parcel in) { Uri.Builder builder = new Uri.Builder(); int lenght = in.readInt(); for(int i=0; i<=lenght; i++){ uris[i]= builder.path(in.readString()).build(); } } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(uris.length); for(int i=0; i<=uris.length; i++){ dest.writeString(uris[i].toString()); } } public static final Parcelable.Creator<ParcelableUri> CREATOR = new Parcelable.Creator<ParcelableUri>() { public ParcelableUri createFromParcel(Parcel in) { return new ParcelableUri(in); } public ParcelableUri[] newArray(int size) { return new ParcelableUri[size]; } }; 

Por lo que sé, las matrices simples no pueden ser puestas en Bundles. Pero puede poner Uri-s en ArrayList y luego llamar Bundle.putParcelableArrayList ().

ejemplo:

  ArrayList<Uri> uris = new ArrayList<Uri>(); // fill uris bundle.putParcelableArrayList(KEY_URIS, uris); 

mas tarde:

  ArrayList<Parcelable> uris = bundle.getParcelableArrayList(KEY_URIS); for (Parcelable p : uris) { Uri uri = (Uri) p; } 

¿No es el Uri parcelable? Puede intentar crear una matriz de elementos parcelables (Uri) y ponerlo en el Bundle.

Usted puede utilizar JSONObject para envolver cualquier objeto y stringify quickle. Regresar de cadena a JSON es realmente trivial

  • Pasar ArrayList de objetos a través de la intención - Java (Android)
  • Apertura del cliente de correo electrónico a través de Intent (pero no para enviar un mensaje)
  • Devolver el resultado de la intención cuando la actividad se cierra con el botón Atrás
  • Recibir datos de otra aplicación viene nulo en android
  • Cómo adjuntar archivos múltiples al cliente de correo electrónico en android
  • Cómo obtener la ruta de la imagen en onActivityresult (Intent data is null)
  • Compartir imagen sin WRITE_EXTERNAL_STORAGE?
  • Evento de calendario intent - startActivityForResult
  • Android google play juegos seleccionar actividad para iniciar cuando se hace clic en la notificación
  • ¿Cómo puedo crear una Intención de Android que transporta datos?
  • ¿Qué es createChooser cuando tengo que usar Intents? ¿Qué podría hacer con este método?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.