2011-05-13 32 views
6

Android mesajlaşmasında, bağlantıyı tıklattığınızda, Kamera, Galeri, Ses, Video vb. Gibi içerik sağlayıcıların listesini açın.. Aynı listeyi açmak için tıklayın? Bunun gibi : Kullanabileceğin düşünüyorum enter image description hereMedya eki listesi nasıl açılır?

cevap

3

Ne istediğiniz aslında biraz karmaşık: Eğer Aktivite böyle bir yöntemi çağırmak gerekir

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(); 
    } 
Iletişim kutusunu göstermek için

ve bu seçim bağdaştırıcısının gerçek uygulamasıdır.

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; 
     } 
    } 
} 

Bu ileti iletişim it (yukarıdaki sınıf MMS uygulamasından ise) yapar ve https://android.googlesource.com/platform/packages/apps/Mms/+/master/src/com/android/mms/ui gidip ComposeMessageActivity en showAddAttachmentDialog yöntem ve AttachmentTypeSelectorAdapter bakarak tüm kanlı detayları görebilirsiniz gerçekte nasıl olduğunu.

0
Intent intent = new Intent(); 
//intent.setType("image/\*"); 
intent.setType("\*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
+0

Yalnızca resim galerisi açılacaktır. – Sandy

2

bu

Intent intent = new Intent(); 
intent.setType("*/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0); 
+0

Yanıt için teşekkürler, bunu denedim, ancak bana yukarıdaki gibi bir sonuç vermiyor (sadece medya içeriği demek). – Sandy