En los mensajes de Android, cuando haga clic en adjuntarlo, abra la lista de proveedores de contenido como Cámara, Galería, Audio, Video, etc.. ¿Cómo abrir la misma lista al hacer clic en el botón? De esta manera: ¿Cómo abrir la lista de archivos adjuntos?
Respuesta
Lo que queremos es en realidad un poco compleja: hay que llamar a un método como este en su actividad
private void showAddAttachmentDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_dialog_attach);
builder.setTitle(R.string.add_attachment);
AttachmentTypeSelectorAdapter mAttachmentTypeSelectorAdapter = new AttachmentTypeSelectorAdapter(this, AttachmentTypeSelectorAdapter.MODE_WITH_SLIDESHOW);
}
builder.setAdapter(mAttachmentTypeSelectorAdapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
addAttachment(mAttachmentTypeSelectorAdapter.buttonToCommand(which), replace);
dialog.dismiss();
}
});
builder.show();
}
para mostrar el cuadro de diálogo, y esta es la implementación real del adaptador de selección.
package com.android.mms.ui;
import com.android.mms.MmsConfig;
import com.android.mms.R;
import android.content.Context;
import java.util.ArrayList;
import java.util.List;
/**
* An adapter to store icons and strings for attachment type list.
*/
public class AttachmentTypeSelectorAdapter extends IconListAdapter {
public final static int MODE_WITH_SLIDESHOW = 0;
public final static int MODE_WITHOUT_SLIDESHOW = 1;
public final static int ADD_IMAGE = 0;
public final static int TAKE_PICTURE = 1;
public final static int ADD_VIDEO = 2;
public final static int RECORD_VIDEO = 3;
public final static int ADD_SOUND = 4;
public final static int RECORD_SOUND = 5;
public final static int ADD_SLIDESHOW = 6;
public AttachmentTypeSelectorAdapter(Context context, int mode) {
super(context, getData(mode, context));
}
public int buttonToCommand(int whichButton) {
AttachmentListItem item = (AttachmentListItem)getItem(whichButton);
return item.getCommand();
}
protected static List<IconListItem> getData(int mode, Context context) {
List<IconListItem> data = new ArrayList<IconListItem>(7);
addItem(data, context.getString(R.string.attach_image),
R.drawable.ic_launcher_gallery, ADD_IMAGE);
addItem(data, context.getString(R.string.attach_take_photo),
R.drawable.ic_launcher_camera, TAKE_PICTURE);
addItem(data, context.getString(R.string.attach_video),
R.drawable.ic_launcher_video_player, ADD_VIDEO);
addItem(data, context.getString(R.string.attach_record_video),
R.drawable.ic_launcher_camera_record, RECORD_VIDEO);
if (MmsConfig.getAllowAttachAudio()) {
addItem(data, context.getString(R.string.attach_sound),
R.drawable.ic_launcher_musicplayer_2, ADD_SOUND);
}
addItem(data, context.getString(R.string.attach_record_sound),
R.drawable.ic_launcher_record_audio, RECORD_SOUND);
if (mode == MODE_WITH_SLIDESHOW) {
addItem(data, context.getString(R.string.attach_slideshow),
R.drawable.ic_launcher_slideshow_add_sms, ADD_SLIDESHOW);
}
return data;
}
protected static void addItem(List<IconListItem> data, String title,
int resource, int command) {
AttachmentListItem temp = new AttachmentListItem(title, resource, command);
data.add(temp);
}
public static class AttachmentListItem extends IconListAdapter.IconListItem {
private int mCommand;
public AttachmentListItem(String title, int resource, int command) {
super(title, resource);
mCommand = command;
}
public int getCommand() {
return mCommand;
}
}
}
Ésta es realmente la forma en el cuadro de diálogo de mensajes lo hace (la clase de arriba es de la aplicación MMS) y se puede ver todos los detalles morbosos yendo a https://android.googlesource.com/platform/packages/apps/Mms/+/master/src/com/android/mms/ui y mirando a showAddAttachmentDialog
método del ComposeMessageActivity y la AttachmentTypeSelectorAdapter
.
Intent intent = new Intent();
//intent.setType("image/\*");
intent.setType("\*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
Creo que se puede utilizar este
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0);
Gracias por su respuesta, lo he intentado, pero no me está dando el resultado anterior (me refiero solo al contenido multimedia). – Sandy
- 1. Cómo mostrar "Abrir en ..." cuando un usuario intenta abrir archivos adjuntos de correo electrónico en iOS
- 2. vsto + diferenciar archivos adjuntos
- 3. Archivos adjuntos de correo electrónico
- 4. ¿Cómo enviar archivos adjuntos de correo electrónico?
- 5. Varios archivos adjuntos en C#
- 6. Múltiples archivos adjuntos con Swiftmailer
- 7. Ver archivos adjuntos en hilos
- 8. cómo agregar archivos adjuntos en PHPMailer?
- 9. Zend Mail 2.0 Archivos adjuntos
- 10. iTextSharp para PDF: ¿cómo agregar archivos adjuntos?
- 11. ¿Cómo envío archivos adjuntos usando SMTP?
- 12. Decodificación MIME (HTML + archivos adjuntos)
- 13. Cómo abrir archivos apk
- 14. cómo abrir archivos * .sdf?
- 15. ¿Cómo abrir archivos VCE?
- 16. sendmailR (Part2): Envío de archivos como archivos adjuntos de correo
- 17. Varios archivos adjuntos a través de phpmailer
- 18. Ubicación de archivos adjuntos en JIRA
- 19. Apertura de archivos adjuntos de correo electrónico en Android
- 20. SOAP con archivos adjuntos en VB.NET
- 21. Cómo recibir correos electrónicos y sus archivos adjuntos de PHP
- 22. (Iphone) asociar una aplicación a alguna extensión de archivo para abrir archivos adjuntos en la aplicación de correo
- 23. Android múltiples archivos adjuntos de correo electrónico con la intención
- 24. archivos adjuntos de jenkins: ¿cuál es la sintaxis?
- 25. ¿Cómo extraigo los archivos adjuntos de un archivo pdf?
- 26. ColdFusion respuesta SOAP con archivos adjuntos
- 27. Paperclip, varios archivos adjuntos y validación
- 28. Evitar que Paperclip elimine/sobrescriba archivos adjuntos en la actualización
- 29. Atributos personalizados para archivos adjuntos CouchDB
- 30. ¿Cómo puedo obtener la lista de directorios previa después de abrir un archivo desde el directorio/lista de archivos?
Se abrirá la galería de imágenes solamente. – Sandy