在Android消息传递中,当点击附件时,打开内容提供商列表,如相机,图库,音频,视频等。如何打开按钮点击相同的列表? 像这样: 如何打开媒体附件列表?
6
A
回答
3
你想要什么其实是一个有点复杂:需要调用这样的方法在你的活动
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();
}
来显示对话框,然后这是选择适配器的实际执行。
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;
}
}
}
这实际上是消息对话框中是如何做的(上面的类是从MMS应用),你可以去https://android.googlesource.com/platform/packages/apps/Mms/+/master/src/com/android/mms/ui和看ComposeMessageActivity的showAddAttachmentDialog
方法和AttachmentTypeSelectorAdapter
看到所有的血淋淋的细节。
0
Intent intent = new Intent();
//intent.setType("image/\*");
intent.setType("\*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
2
我认为你可以使用这个
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0);
+0
感谢您的回复,我已经尝试过,但它并没有给我像上面的结果(我的意思是只有媒体内容)。 – Sandy
相关问题
- 1. 如何从Access表中打开附件
- 2. 如何打开PDF附件
- 3. 媒体文件无法打开,起到
- 4. FeedWord Press - 媒体附件
- 5. 附加组件媒体中心插件
- 6. “保存媒体附件时出错。”在媒体库
- 7. 如何从PDF包中打开附件?
- 8. 打开Sitecore媒体库时获取404
- 9. 富媒体列表单击事件
- 10. 在iOS5中打开HTML表单附件
- 11. 如何直接从Zip文件打开媒体文件(不提取它)?
- 12. 从媒体文件夹打开PDF文件Django
- 13. 我如何在sapui5中打开媒体源?
- 14. 如何在前端打开wordpress的媒体框架?
- 15. 媒体播放列表
- 16. wordpress-java API |如何获得帖子的媒体附件链接?
- 17. 如何直接从InfoPath表单打开附件?
- 18. 媒体打印CSS
- 19. 在WebView中打开附件
- 20. 用httpcontext打开附件
- 21. MailMessage - 错误打开附件
- 22. 以windows窗体打开下拉列表
- 23. 如何在VB6中为媒体中心检测当前打开的文件
- 24. 打开OPENFILENAME对话框时获取媒体文件的信息
- 25. 将不会打开Windows媒体播放器文件
- 26. 的Joomla媒体管理器无法打开视频文件
- 27. 当打开媒体URI时,Azure角色,媒体基础,COMException 0x80072EE4在MFCreateSourceReaderFromURL()中
- 28. 无需打开打印附件
- 29. 如何打开窗体?
- 30. 如何在Windows窗体中显示最近打开的文件的列表?
它只会打开图片库。 – Sandy