Android中如何取得联系人,如何得到一个联系人下面的多个号码
2010-12-01 21:56
543 查看
1、Content Provider是Android提供的一个供Android多个应用程序数据共享的技术
2、Andriod系统自带联系人(Contacts)软件,如何在自定义系统中调用Contacts中的联系人,以及如何处理一个联系人下面的多个号码
main.xml:仅显示按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click Me"></Button>
</LinearLayout>
Java代码
package yyl.contentprovider;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ContentProviderDemo extends Activity {
//定义变量
private Button button = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据控件Id得到控件对象
button = (Button) findViewById(R.id.button);
//给按钮控件添加单击事件监听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//调用显示联系人方法
printContacts();
}
});
}
/*
* 自定义显示Contacts提供的联系人的方法
*/
public void printContacts() {
//生成ContentResolver对象
ContentResolver contentResolver = getContentResolver();
// 获得所有的联系人
/*Cursor cursor = contentResolver.query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
*/
//这段代码和上面代码是等价的,使用两种方式获得联系人的Uri
Cursor cursor = contentResolver.query(Uri.parse("content://com.android.contacts/contacts"),null,null,null,null);
// 循环遍历
if (cursor.moveToFirst()) {
int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do {
// 获得联系人的ID
String contactId = cursor.getString(idColumn);
// 获得联系人姓名
String displayName = cursor.getString(displayNameColumn);
//使用Toast技术显示获得的联系人信息
Toast.makeText(ContentProviderDemo.this, "联系人姓名:" + displayName,Toast.LENGTH_LONG).show();
// 查看联系人有多少个号码,如果没有号码,返回0
int phoneCount = cursor
.getInt(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (phoneCount > 0) {
// 获得联系人的电话号码列表
Cursor phoneCursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "=" + contactId, null, null);
if(phoneCursor.moveToFirst())
{
do
{
//遍历所有的联系人下面所有的电话号码
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//使用Toast技术显示获得的号码
Toast.makeText(ContentProviderDemo.this, "联系人电话:"+phoneNumber,Toast.LENGTH_LONG).show();
}while(phoneCursor.moveToNext());
}
}
} while (cursor.moveToNext());
}
}
}
2、Andriod系统自带联系人(Contacts)软件,如何在自定义系统中调用Contacts中的联系人,以及如何处理一个联系人下面的多个号码
main.xml:仅显示按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click Me"></Button>
</LinearLayout>
Java代码
package yyl.contentprovider;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ContentProviderDemo extends Activity {
//定义变量
private Button button = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据控件Id得到控件对象
button = (Button) findViewById(R.id.button);
//给按钮控件添加单击事件监听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//调用显示联系人方法
printContacts();
}
});
}
/*
* 自定义显示Contacts提供的联系人的方法
*/
public void printContacts() {
//生成ContentResolver对象
ContentResolver contentResolver = getContentResolver();
// 获得所有的联系人
/*Cursor cursor = contentResolver.query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
*/
//这段代码和上面代码是等价的,使用两种方式获得联系人的Uri
Cursor cursor = contentResolver.query(Uri.parse("content://com.android.contacts/contacts"),null,null,null,null);
// 循环遍历
if (cursor.moveToFirst()) {
int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do {
// 获得联系人的ID
String contactId = cursor.getString(idColumn);
// 获得联系人姓名
String displayName = cursor.getString(displayNameColumn);
//使用Toast技术显示获得的联系人信息
Toast.makeText(ContentProviderDemo.this, "联系人姓名:" + displayName,Toast.LENGTH_LONG).show();
// 查看联系人有多少个号码,如果没有号码,返回0
int phoneCount = cursor
.getInt(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (phoneCount > 0) {
// 获得联系人的电话号码列表
Cursor phoneCursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "=" + contactId, null, null);
if(phoneCursor.moveToFirst())
{
do
{
//遍历所有的联系人下面所有的电话号码
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//使用Toast技术显示获得的号码
Toast.makeText(ContentProviderDemo.this, "联系人电话:"+phoneNumber,Toast.LENGTH_LONG).show();
}while(phoneCursor.moveToNext());
}
}
} while (cursor.moveToNext());
}
}
}
相关文章推荐
- android中如何取得用户手机的常用联系人(即收藏夹的联系人)
- Android 编程下 WebView 加载一个网页如何得到网页的 Cookie 值
- android 保存具有不同前缀的同一号码分别为A和B,用其中一个呼叫,通话记录一直显示另一个联系人名字的问题
- Android 编程下 WebView 加载一个网页如何得到网页的 Cookie 值
- Android Cursor的问题 如何查询得到的内容很多,如何取其中的特定的一个
- android 保存具有不同前缀的同一号码分别为A和B,用其中一个呼叫,通话记录一直显示另一个联系人名字的问题
- Android 为同一个联系人添加多个号码
- iOS 通讯录操作 删除联系人 以及联系人多个号码 如何删除其中一个号码
- [Android] 如何取得版本号码
- Android中在用户登录时如何识别是否是一个正确的手机号码
- android 保存具有不同前缀的同一号码分别为A和B,用其中一个呼叫,通话记录一直显示另一个联系人名字的问题
- 在android中如何使用异步任务,下面是一个详尽的分析,国外牛人的详解
- 如何做一个成功的外贸人士?几点招式取得更大利润
- 如何不要让ndk-build自动删除.so, 或如何链接一个不在lib/armeabi下的第三方库 && NDK Android.mk 语法
- Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日
- 【Android UI】如何做一个纯粹的Android app UI 设计
- 【Android】如何设置一个自定义的Button
- 如何使用Retrofit写一个Android的REST客户端的小教程
- 如何开发一个适配Android和iOS双平台的React Native应用
- Android : 如何得到Activities栈顶的Activity名称