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

来源:互联网 发布:如何建数据库 编辑:程序博客网 时间:2024/06/08 00:07
       你是不是很多时候,想从弹出的电话本姓名列表中中查找到某个人,然后再获取该人的详细信息呢?
       你是不是想选择从弹出的列表中选择一张图片,然后将其进行进一步的操作呢?
       如果,你想,那你是不是很像知道,我们应该怎么让其弹出来一张选择列表,又应该怎么代码实现后边的操作呢?
       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