在android中使用Provider.Contact来取得联系人的资料
2012-07-28 11:35
483 查看
程序简介:设置一个Button,在onClick()事件驱动后,调用手机内置的通讯录界面,并在选择联系人之后,返回自己的Activity。取得联系人的名字和电话号码放入两个EditText中。
程序如下所示:
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class A08Activity extends Activity {
EditText et01,et02;
Button b;
TextView tv;
//定义一个静态常数作为判断数据返回给主Activity使用
public static final int PICK_CONTACT_SUBACTIVITY=2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b=(Button)findViewById(R.id.button);
b.setText("查询联系人资料");
b.setBackgroundColor(Color.GREEN);
et01=(EditText)findViewById(R.id.et01);
et02=(EditText)findViewById(R.id.et02);
et01.setBackgroundColor(Color.YELLOW);
et02.setBackgroundColor(Color.YELLOW);
et01.setTextColor(Color.RED);
et02.setTextColor(Color.RED);
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将联系人的资源位置作为参数传入Uri中
Uri uri=Uri.parse("content://contacts/people");
//将Intent.ACTION_PICK常数和Uri对象传入
Intent i=new Intent(Intent.ACTION_PICK,uri);
//打开新的Activity
startActivityForResult(i,PICK_CONTACT_SUBACTIVITY);
}
});
}
public void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case PICK_CONTACT_SUBACTIVITY:
final Uri uriRet=data.getData();
if(uriRet!=null){
try {
//通过Cursor访问联系人的资料
Cursor c=managedQuery(uriRet,null,null,null,null);
// 将Cursor移到数据最前端
c.moveToFirst();
String name=c.getString(c.getColumnIndexOrThrow(Contacts.People.NAME));
String number=c.getString(c.getColumnIndexOrThrow(Contacts.People.NUMBER));
et01.setText(name);
et02.setText(number);
} catch (IllegalArgumentException e) {
tv.setText(e.toString());
e.printStackTrace();
}
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
注意:本程序还需要添加android.permission.READ_CONTACTS权限。
程序如下所示:
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class A08Activity extends Activity {
EditText et01,et02;
Button b;
TextView tv;
//定义一个静态常数作为判断数据返回给主Activity使用
public static final int PICK_CONTACT_SUBACTIVITY=2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b=(Button)findViewById(R.id.button);
b.setText("查询联系人资料");
b.setBackgroundColor(Color.GREEN);
et01=(EditText)findViewById(R.id.et01);
et02=(EditText)findViewById(R.id.et02);
et01.setBackgroundColor(Color.YELLOW);
et02.setBackgroundColor(Color.YELLOW);
et01.setTextColor(Color.RED);
et02.setTextColor(Color.RED);
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将联系人的资源位置作为参数传入Uri中
Uri uri=Uri.parse("content://contacts/people");
//将Intent.ACTION_PICK常数和Uri对象传入
Intent i=new Intent(Intent.ACTION_PICK,uri);
//打开新的Activity
startActivityForResult(i,PICK_CONTACT_SUBACTIVITY);
}
});
}
public void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case PICK_CONTACT_SUBACTIVITY:
final Uri uriRet=data.getData();
if(uriRet!=null){
try {
//通过Cursor访问联系人的资料
Cursor c=managedQuery(uriRet,null,null,null,null);
// 将Cursor移到数据最前端
c.moveToFirst();
String name=c.getString(c.getColumnIndexOrThrow(Contacts.People.NAME));
String number=c.getString(c.getColumnIndexOrThrow(Contacts.People.NUMBER));
et01.setText(name);
et02.setText(number);
} catch (IllegalArgumentException e) {
tv.setText(e.toString());
e.printStackTrace();
}
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
注意:本程序还需要添加android.permission.READ_CONTACTS权限。
相关文章推荐
- Android使用Contact数据模型来批量插入联系人
- [Android]笔记12:使用QuickContactBadge关联联系人
- 11_android系统联系人(更新用户名称为例)介绍ContentProviderOperation的使用
- Android 使用QuickContactBadge关联联系人
- Android 7.0拍照/相册/截取图片FileProvider使用
- 使用 Docker 安装Node-Red Container开发App 藉由IBM Weather Company Data 服务取得世界各地气象资料
- android2.1取得通讯录联系人名字和电话号码
- Android 获取联系人资料。
- android studio contentprovider读取手机联系人
- Android之使用PackageManager取得程序的包名、图标等
- Android使用READ_CONTACTS读取手机联系人
- 通过ContemtProvider对android联系人实现增删改查
- 使用QuickContactBadge关联联系人
- 使用android实现物联网解决方案的第一步,资料篇
- Android使用RecyclerView实现仿微信联系人列表
- Android--取得多组电话号码/Activity.startManagingCursor方法的使用
- KJFrameForAndroid 资料——KJBitmap使用方法
- Android开发--详解ContentProvider/Cursor的使用
- 使用Loader获取Android联系人列表
- Android的桌面组件App Widget的使用方法 AppWidgetProvider RemoteViews