关闭

浏览选择图片/音频/视频&启动程序让其他程序进行选择

标签: nullandroidstringactionpathurl
2068人阅读 评论(0) 收藏 举报
分类:

(1)如果你需要通过浏览去选择一个你需要的Pic/Music/Video:

//触发代码
 Intent intent = new Intent();  
 intent.setType(“image/*”); //audio/* video/*
 intent.setAction(Intent.ACTION_GET_CONTENT);  
 startActivityForResult(intent, 1);  
//得到返回值,并通过url获取真实路径的方法:重写Activity中的方法
@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 1) {
			if (resultCode == RESULT_OK) {
				Uri uri = data.getData(); // uri=content://media/external/video/media/804
				Cursor cursor = managedQuery(uri,null,null,null,null);
				int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
				cursor.moveToFirst();
				String path = cursor.getString(index); //path=/mnt/sdcard/mediadump/sample.mp4
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

(2)如果你做的是一个Photo/Music/Video程序,能通过Intent.ACTION_GET_CONTENT过滤器启动程序以供程序进行选择:

1)在AndroidManifest.xml中添加如下过滤器

<intent-filter>
  <action android:name="android.intent.action.GET_CONTENT" />
   <category android:name="android.intent.category.OPENABLE" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:mimeType="image/*" />
   <data android:mimeType="video/*" />
</intent-filter>
这样当另一个程序需要选择视频or图片时,就是提示你是否选择你的程序

2)在代码中添加返回值,一般添加在Click动作的Listener中,点击是获取点击项目触发,代码如下:

if (mActivity.getIntent().equals(Intent.ACTION_GET_CONTENT)) {
     Intent result = new Intent().setData(mList.get(pos).getContentUri());
     mActivity.setResult(Activity.RESULT_OK, result);
     mActivity.finish();
}//其中mActivity指的是你的MainActivity
*********************************************一些相关知识的拓****************************************************
(1)Intent.ACTION_PICK  Intent.ACTION_GET_CONTENT都可以实现类似的功能,通过查看源码和注释,

Intent.ACTION_PICK 主要用于向下兼容 / Intent.ACTION_GET_CONTENT 支持使用

通过Intent.ACTION_PICK获取联系人的示例代码

Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data){ 
 super.onActivityResult(reqCode, resultCode, data); 
 switch (reqCode) {
 case (PICK_CONTACT) :     
 if (resultCode == Activity.RESULT_OK) {       
 Uri contactData = data.getData();       
 Cursor c =  managedQuery(contactData, null, null, null, null);       
 if (c.moveToFirst()) {         
 String name = c.getString(c.getColumnIndexOrThrow(People.NAME));         
 }}     
 break; 
 }}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:408350次
    • 积分:3515
    • 等级:
    • 排名:第9772名
    • 原创:18篇
    • 转载:113篇
    • 译文:1篇
    • 评论:65条
    文章分类
    最新评论