1. 程式人生 > >Android 巧用Itent.ACTION_PICK和Intent.ACTION_GET_CONTENT(一)

Android 巧用Itent.ACTION_PICK和Intent.ACTION_GET_CONTENT(一)

       你是不是很多時候,想從彈出的電話本姓名列表中中查詢到某個人,然後再獲取該人的詳細資訊呢?
       你是不是想選擇從彈出的列表中選擇一張圖片,然後將其進行進一步的操作呢?
       如果,你想,那你是不是很像知道,我們應該怎麼讓其彈出來一張選擇列表,又應該怎麼程式碼實現後邊的操作呢?
       Itent.ACTION_PICK  Intent.ACTION_GET_CONTENT 兩者都可以完成類似的功能,讓我們一起來看下例子:

第一:Intent.ACTION_PICK
       首先新增一個許可權: 

java程式碼:
  1. <uses-permission android:name="android.permission.READ_CONTACTS"/> 
複製程式碼
       發起一個 Contact Picker 

java程式碼:
  1. Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI); 
  2. startActivityForResult(intent, PICK_CONTACT); 
複製程式碼
       重寫方法 

java程式碼:
  1. @Override 
  2. public void onActivityResult(int reqCode, int resultCode, Intent data) 

  3. super.onActivityResult(reqCode, resultCode, data); 
  4. switch (reqCode) { 
  5. case (PICK_CONTACT) : 
  6. if (resultCode == Activity.RESULT_OK) { 
  7. Uri contactData = data.getData(); 
  8. Cursor c = managedQuery(contactData, null, null, null, null); 
  9. if (c.moveToFirst()) { 
  10. String name = c.getString(c.getColumnIndexOrThrow(People.NAME)); 
  11. // TODO Whatever you want to do with the selected contact name. 


  12. break; 


複製程式碼
       例如

java程式碼:
  1. String[] columns = new String[] {People.NAME}; 
  2. int[] names = new int[] {R.id.row_entry}; 
  3. mAdapter = new SimpleCursorAdapter(this, R.layout.mycontacts, C, columns, names); 
  4. setListAdapter(mAdapter); 
複製程式碼
第二:Intent.ACTION_GET_CONTENT
       我們可以發現,其實action_get_content是通過intent中設定的type屬性來判斷具體呼叫哪個程式的。

java程式碼:
  1. Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
  2. intent.setType("audio/*"); 
  3. startActivity(Intent.createChooser(intent, "Select music"));
複製程式碼
       執行之會彈出一個對話方塊效果為:

3.jpg