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

  • actualizar mi aplicación
  • ¿Está bien cancelar el registro de 'BroadcastReceiver' dinámico del propio método onReceive () del receptor?
  • Intención equivocada de conseguir
  • Al usar 'android.intent.action.SEND', la actividad receptora no regresa a la actividad que inició el recurso compartido
  • ¿Cómo puedo pasar URI con intención explícita?
  • Android: enviar SMS a través de la intención con el cuerpo y volver.
  • Theme.NoDisplay crea un retraso de strage
  • ¿Cómo añadir acción visible sólo en aplicaciones específicas a ACTION_SEND?
  • Integración de la aplicación con los resultados de búsqueda de Google y Chrome
  • Cómo abrir una segunda actividad al hacer clic en el botón de la aplicación android
  • Intención: quitar botones Siempre / Sólo una vez
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.