ApiDemos学习知识点Content-PickContacts(5)
来源:互联网 发布:c 程序员 编辑:程序博客网 时间:2024/06/07 01:20
本Activity是以获取联系人信息为例,通过设置数据类型来选择能够打开该类型的应用,通过设置不同的数据类型打开联系人的不同信息。
注意:使用这种方式是不需要添加读取联系人的权限的,因为我们调用的是系统联系人的应用
首先还是上一下截图
下面看一下布局和代码解析
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="4dip" android:gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:paddingBottom="4dip" android:text="@string/pick_contact_msg"/> <Button android:id="@+id/pick_contact" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pick_contact"> <requestFocus /> </Button> <Button android:id="@+id/pick_person" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pick_person"> </Button> <Button android:id="@+id/pick_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pick_phone"> </Button> <Button android:id="@+id/pick_address" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pick_address"> </Button></LinearLayout>
public class PickContact extends Activity { Toast mToast; ResultDisplayer mPendingResult;/* * 定义一个类,实现对组件的点击监听,用于在点击事件时打开相应的activity */ class ResultDisplayer implements OnClickListener { String mMsg; String mMimeType; ResultDisplayer(String msg, String mimeType) { mMsg = msg; mMimeType = mimeType; } // ACTION_GET_CONTENT:允许用户通过设置数据类型来选择能够打开这种类型的数据的 // activity。与ACTION_PICK的区别在于:ACTION_PICK只是指明了我们所预期的数据 // 类型,而ACTION_GET_CONTENT则允许用户从数据的Uri中选择相应的类型 public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(mMimeType); mPendingResult = this; startActivityForResult(intent, 1); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pick_contact); // Watch for button clicks. ((Button)findViewById(R.id.pick_contact)).setOnClickListener( new ResultDisplayer("Selected contact", ContactsContract.Contacts.CONTENT_ITEM_TYPE)); ((Button)findViewById(R.id.pick_person)).setOnClickListener( new ResultDisplayer("Selected person", "vnd.android.cursor.item/person")); ((Button)findViewById(R.id.pick_phone)).setOnClickListener( new ResultDisplayer("Selected phone", ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)); ((Button)findViewById(R.id.pick_address)).setOnClickListener( new ResultDisplayer("Selected address", ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)); } /* * 将我们所预期的数据查询出来,当我们点击某条数据时,用一个Toast显示一下该条记录的Id和uri信息 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { Uri uri = data.getData(); if (uri != null) { Cursor c = null; try { c = getContentResolver().query(uri, new String[] { BaseColumns._ID }, null, null, null); if (c != null && c.moveToFirst()) { int id = c.getInt(0); if (mToast != null) { mToast.cancel(); } String txt = mPendingResult.mMsg + ":\n" + uri + "\nid: " + id; mToast = Toast.makeText(this, txt, Toast.LENGTH_LONG); mToast.show(); } } finally { if (c != null) { c.close(); } } } } }}
阅读全文
0 0
- ApiDemos学习知识点Content-PickContacts(5)
- ApiDemos学习知识点Content-ClipBoard(3)
- ApiDemos学习知识点Content-Asset(4)
- ApiDemos学习知识点Content-InstallApk(6)
- ApiDemos学习知识点Content-Rescoures(7)
- ApiDemos学习知识点Content-ExternalStorage(8)
- ApiDemos知识点学习(一)
- ApiDemos学习知识点之Sensors
- ApiDemos学习知识点之media-VideoView(10)
- ApiDemos学习知识点之Animation-AnimationCloing
- Android Api Demos登顶之路(六十一)Content-->PickContacts
- ApiDemos学习知识点之media-AudioFx(9)
- ApiDemos学习知识点之media-MediaPlayer_Audio&MediaPlayer_Video(11)
- ApiDemos学习知识点之media-MediaPlayerDemo(12)
- ApiDemos学习知识点之os-MorseCode(13)
- ApiDemos学习知识点之os-RotationVector(14)
- APIDemos 学习
- ApiDemos学习
- mybatis的insert语句获取自增id的方法(mySQL)
- 计算机网络中各层的协议图表
- plsql工具对oracle数据的导入导出
- 工作流创建数据库
- mt6582 camera 移植
- ApiDemos学习知识点Content-PickContacts(5)
- Opencv Qt 学习笔记(一)安装qt opencv 环境Win7(cmake3.9.1和Opencv3.3.0)
- 对OpenStack内存使用情况的分析
- HandlerThread源码分析
- 三、添加日志功能
- Fleury(弗罗莱)算法求欧拉路径
- 学习java架构的笔记
- 有了这张对照表,再也不怕写MyBatis代码了
- SSM(一)框架的整合