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

(1)如果你需要通过浏览去选择一个你需要的Picture/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; 
 }}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章