瀏覽選擇圖片/音頻/視頻啓動程序讓其他程序進行選擇

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

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