Dans la messagerie Android, lorsque vous cliquez sur le joindre, ouvrez la liste du fournisseur de contenu comme Appareil photo, Galerie, Audio, Vidéo etc. Comment ouvrir la même liste sur le bouton clic? Comme ceci: Comment ouvrir la liste des pièces jointes?
Répondre
Ce que vous voulez est en fait un peu complexe: vous avez besoin d'appeler une méthode comme celui-ci dans votre activité
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();
}
pour afficher la boîte de dialogue, puis il s'agit de l'implémentation réelle de l'adaptateur de sélection.
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;
}
}
}
Ceci est en fait comment la boîte de dialogue de messagerie le fait (la classe ci-dessus est de l'application MMS) et vous pouvez voir tous les détails gores en allant https://android.googlesource.com/platform/packages/apps/Mms/+/master/src/com/android/mms/ui et regardant méthode showAddAttachmentDialog
du ComposeMessageActivity et AttachmentTypeSelectorAdapter
.
Intent intent = new Intent();
//intent.setType("image/\*");
intent.setType("\*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
Je pense que vous pouvez utiliser cette
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0);
Merci pour la réponse, j'ai essayé ceci, mais il ne me donne pas le résultat comme ci-dessus (je veux dire seulement le contenu multimédia). – Sandy
- 1. obtenir/ouvrir des pièces jointes dans Outlook
- 2. Charger les pièces jointes noms sans pièces jointes dans C#
- 3. Comment changer l'encodage des pièces jointes sp_send_dbmail?
- 4. Pièces jointes s'incrustant
- 5. NSTextView Images/pièces jointes
- 6. Identification des pièces jointes en résultat WebDav
- 7. iphone Pièces jointes XML
- 8. Pièces jointes en pdf
- 9. PHP: Comment déterminer le type MIME des pièces jointes?
- 10. Pièces jointes de liste SharePoint, comment les remplacer
- 11. pièces jointes get_posts Wordpress orderBy
- 12. Emplacement de stockage des pièces jointes YouTrack
- 13. envoyer/recevoir des pièces jointes dans WCF
- 14. Les pièces jointes ne sont pas jointes
- 15. SharePoint via les services Web: comment ajouter des pièces jointes?
- 16. Vérification des pièces jointes en JavaScript
- 17. PHP envoyer des pièces jointes de courrier
- 18. Obtenir des pièces jointes à partir d'Outlook
- 19. envoyer plusieurs messages avec des pièces jointes
- 20. Pièces jointes dans un UIWebView
- 21. iphone - empêcher l'affichage des pièces jointes
- 22. Taille des pièces jointes dans TFS 2010
- 23. Paperclip, before_save, et suppression des pièces jointes
- 24. Ajouter des pièces jointes dans Acess VBA
- 25. Emplacement des pièces jointes dans JIRA
- 26. désérialisation plusieurs pièces jointes des données
- 27. Set Nom des pièces jointes en C#
- 28. Comment afficher "Ouvrir dans ..." lorsqu'un utilisateur essaie d'ouvrir des pièces jointes dans iOS
- 29. Comment envoyer/ouvrir des pièces jointes à partir d'une application Android?
- 30. Pièces jointes Ghost dans CouchDB
Il ouvrira la galerie d'images seulement. – Sandy