如何让Android通讯录类型? [英] how to get contacts type in android?
问题描述
我要找回两个触点的名称和它们的类型,我layout.I我提供我的活动和布局file.I正在一个无效的列类型exception.any帮助将提前大大AP preciable.thanks。
TestActivity.class:
包application.test;
进口android.app.ListActivity; 进口android.os.Bundle;
进口android.provider.ContactsContract;
进口android.provider.ContactsContract.CommonDataKinds.Phone;
进口android.provider.ContactsContract.Data;
进口android.view.LayoutInflater;
进口android.view.ViewGroup.LayoutParams;
进口android.widget.LinearLayout;
进口android.widget.ListView;
进口android.widget.RelativeLayout;
进口android.content.ContentResolver;
进口android.database.Cursor;
进口android.database.SQLException; 公共类测试活动扩展了ListActivity
{
字符串名称[];
字符串PHONETYPE []; ListView的LVIEW;
ListViewAdapter lviewAdapter;
@覆盖
保护无效的onCreate(捆绑savedInstanceState)
{ super.onCreate(savedInstanceState);
的LayoutParams PARAMS =新RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
的LinearLayout mainLayout =新的LinearLayout(本);
mainLayout.setOrientation(LinearLayout.VERTICAL);
LayoutInflater layoutInflater = getLayoutInflater();
mainLayout.addView(layoutInflater.inflate(R.layout.main,NULL));
mainLayout.addView(layoutInflater.inflate(R.layout.extra,NULL)); this.addContentView(mainLayout,则params);
LVIEW =(ListView控件)findViewById(android.R.id.list);
getContacts();
lviewAdapter =新ListViewAdapter(这一点,姓名,PHONETYPE);
lview.setAdapter(lviewAdapter); } //的onCreate
公共无效getContacts(){
INT I = 0;
ContentResolver的CR = getContentResolver(); 的String [] =投影新的String [] {Data._ID,
ContactsContract.Contacts.DISPLAY_NAME,Phone.TYPE}; 光标CUR = cr.query(ContactsContract.Data.CONTENT_URI,
投影,NULL,NULL,NULL); 如果(CUR = NULL&放大器;!&安培; cur.moveToFirst()){ 尝试{ INT IndexID为= cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
INT INDEXNAME = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
INT indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE); 而(cur.moveToNext()){ 我++;
字符串ID = cur.getString(IndexID为);
名称由[i] = cur.getString(INDEXNAME);
PHONETYPE [I] = cur.getString(indexPhoneType);
} }赶上(的SQLException SQLE){ sqle.printStackTrace();
} {最后
如果(!cur.isClosed()){
cur.close();
}
}
}
} }
ListViewAdapter.class
包application.test;
进口android.app.Activity;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseAdapter;
进口android.widget.TextView; 公共类ListViewAdapter延伸BaseAdapter { 活动背景;
字符串名称[];
字符串PHONETYPE []; 公共ListViewAdapter(Activity上下文,字符串[]名,字符串[] PHONETYPE){
超();
this.context =背景;
this.name =名称;
this.phoneType = PHONETYPE;
}
@覆盖
公众诠释的getCount(){
// TODO自动生成方法存根
返回name.length;
} @覆盖
公共对象的getItem(INT位置){
// TODO自动生成方法存根
返回null;
} @覆盖
众长getItemId(INT位置){
// TODO自动生成方法存根
返回0;
}
公共类viewHolder {
TextView的顶部;
TextView的底部;
} @覆盖
公共查看getView(INT位置,查看convertView,父母的ViewGroup){
// TODO自动生成方法存根 viewHolder持有人;
如果(convertView == NULL){ LayoutInflater充气= context.getLayoutInflater();
convertView = inflator.inflate(R.layout.row,NULL); 持有人=新viewHolder();
holder.top =(TextView中)convertView.findViewById(R.id.toptext);
holder.bottom =(TextView中)convertView.findViewById(R.id.bottomtext);
convertView.setTag(保持器);
}其他{
支架=(viewHolder)convertView.getTag();
} holder.top.setText(名称[位置]);
holder.bottom.setText(PHONETYPE [位置]); 返回convertView;
} }
row.xml:
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =机器人:ATTR /列表preferredItemHeight
机器人:填充=6DIP> <的LinearLayout
机器人:方向=垂直
机器人:layout_width =0dip
机器人:layout_weight =1
机器人:layout_height =FILL_PARENT>
<的TextView
机器人:ID =@ + ID /的TopText
机器人:layout_width =FILL_PARENT
机器人:layout_height =0dip
机器人:layout_weight =1
机器人:重力=center_vertical
/>
<的TextView
机器人:layout_width =FILL_PARENT
机器人:layout_height =0dip
机器人:layout_weight =1
机器人:ID =@ + ID / bottomtext
机器人:单线=真
机器人:ellipsize =金字招牌
/>
< / LinearLayout中>
< / LinearLayout中>
main.xml中:
<?XML版本=1.0编码=UTF-8&GT?; <的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =FILL_PARENT机器人:ID =@ + ID / relativeLayout1
机器人:layout_height =FILL_PARENT>
< TextView的机器人:ID =@ + ID / textView1
机器人:textAppearance =机器人:ATTR / textAppearanceMedium
机器人:layout_height =WRAP_CONTENT的android:layout_width =WRAP_CONTENT
机器人:文字=所有联系人机器人:layout_alignParentTop =真
机器人:layout_centerHorizontal =真正的>< / TextView的>
< TextView的机器人:ID =@ + ID / textView2
机器人:textAppearance =机器人:ATTR / textAppearanceMedium
机器人:layout_height =WRAP_CONTENT的android:layout_width =WRAP_CONTENT
机器人:文字=搜索机器人:layout_alignBaseline =@ + ID / editText1
机器人:layout_alignBottom =@ + ID / editText1
机器人:layout_alignParentLeft =真正的>< / TextView的>
< EditText上的android:layout_height =WRAP_CONTENT的android:layout_width =180dp机器人:ID =@ + ID / editText1机器人:layout_below =@ + ID / textView1机器人:layout_toRightOf =@ + ID / textView2机器人:layout_marginTop =18dp>
<&requestFocus的GT;< / requestFocus的>
< /&的EditText GT;
<按钮的android:layout_height =WRAP_CONTENT
机器人:文字=搜索的android:layout_width =WRAP_CONTENT机器人:ID =@ + ID / button_searchContact
机器人:layout_alignBottom =@ + ID / editText1机器人:layout_toRightOf =@ + ID / editText1>< /按钮>
< ListView的机器人:ID =@机器人:ID /列表
机器人:layout_height =WRAP_CONTENT的android:layout_width =FILL_PARENT
机器人:layout_marginBottom =70dp
机器人:layout_alignParentLeft =真正的机器人:layout_below =@ + ID / editText1>< /&的ListView GT;
< / RelativeLayout的>
extra.xml:
<?XML版本=1.0编码=UTF-8&GT?; <的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=垂直的android:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT机器人:ID =@ + ID / commonButtons
机器人:重力=底>
< ImageButton的机器人:背景=@绘制/最爱的android:layout_width =65dp机器人:ID =@ + ID / button_favorites机器人:layout_height =50dp机器人:layout_alignParentBottom =真正的机器人:layout_alignParentLeft =真正的机器人:layout_marginBottom =20dp>< / ImageButton的>
< ImageButton的机器人:背景=@绘制/最近通话的android:layout_width =65dp机器人:ID =@ + ID / button_recent机器人:layout_height =50dp机器人:layout_alignTop =@ + ID / button_favorites机器人:layout_toLeftOf =@ + ID / button_contacts>< / ImageButton的>
< ImageButton的机器人:背景=@绘制/接触的android:layout_width =65dp机器人:ID =@ + ID / button_contacts机器人:layout_height =50dp机器人:layout_alignTop =@ + ID / button_recent机器人:layout_centerHorizontal =真正的>< / ImageButton的>
< ImageButton的机器人:背景=@绘制/键盘的android:layout_width =65dp机器人:ID =@ + ID / button_keypad机器人:layout_height =50dp机器人:layout_alignTop =@ + ID / button_contacts机器人:layout_toLeftOf =@ + ID / button_about>< / ImageButton的>
< ImageButton的机器人:背景=@绘制/关于机器人:layout_width =65dp机器人:ID =@ + ID / button_about机器人:layout_height =50dp机器人:layout_alignTop =@ + ID / button_keypad机器人:layout_alignParentRight =真正的>< / ImageButton的>
<的TextView的android:layout_width =WRAP_CONTENT机器人:文本=收藏夹
机器人:ID =@ + ID / textView1机器人:layout_height =WRAP_CONTENT
机器人:layout_below =@ + ID / button_recent机器人:layout_toLeftOf =@ + ID / button_recent>< / TextView的> <的TextView的android:layout_width =WRAP_CONTENT机器人:文本=联系人
机器人:ID =@ + ID / textView3机器人:layout_height =WRAP_CONTENT
机器人:layout_alignBaseline =@ + ID / textView2
机器人:layout_alignBottom =@ + ID / textView2机器人:layout_toLeftOf =@ + ID / button_keypad机器人:layout_alignLeft =@ + ID / button_contacts>< / TextView的>
<的TextView的android:layout_width =WRAP_CONTENT机器人:文本=最近通话机器人:ID =@ + ID / textView2机器人:layout_height =WRAP_CONTENT机器人:layout_below =@ + ID / button_recent机器人:layout_toRightOf = @ + ID / button_favorites机器人:layout_alignRight =@ + ID / button_recent>< / TextView的>
<的TextView的android:layout_width =WRAP_CONTENT机器人:文本=键盘
机器人:ID =@ + ID / textView4机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentBottom =真正的机器人:layout_toRightOf =@ + ID / button_contacts
机器人:layout_toLeftOf =@ + ID / button_about>< / TextView的>
<的TextView的android:layout_width =WRAP_CONTENT机器人:文本=关于
机器人:ID =@ + ID / textView5机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentBottom =真正的机器人:layout_alignLeft =@ + ID / button_about
机器人:layout_alignParentRight =真正的>< / TextView的>
< / RelativeLayout的>
的AndroidManifest.xml:
<?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=application.test
安卓版code =1
机器人:=的versionName1.0>
<采用-SDK安卓的minSdkVersion =8/>
<使用许可权的android:NAME =android.permission.READ_CONTACTS>< /使用许可权> <应用机器人:图标=@绘制/图标机器人:标签=@字符串/ APP_NAME>
<活动机器人:名字=测试活动
机器人:标签=@字符串/ APP_NAME>
&所述;意图滤光器>
<作用机器人:名字=android.intent.action.MAIN/>
<类机器人:名字=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT; < /用途>
< /清单>
下面是我测试过的code。与我的Activity类。布局并不重要,作为接触信息打印在标准输出(在DDMS看)。
进口android.app.Activity;
进口android.content.ContentResolver;
进口android.content.Intent;
进口android.database.Cursor;
进口android.database.SQLException;
进口android.net.Uri;
进口android.os.Bundle;
进口android.provider.ContactsContract;
进口android.provider.ContactsContract.CommonDataKinds.Phone;
进口android.provider.ContactsContract.Contacts.Data;
进口android.util.Log;
进口android.view.View;
进口android.widget.Button;
进口android.widget.CheckBox;
进口android.widget.CompoundButton;
进口android.widget.CompoundButton.OnCheckedChangeListener;
进口android.widget.ListView;
进口android.widget.SimpleCursorAdapter;公共final类的ContactManager延伸活动{公共静态最后的字符串标记=的ContactManager;
@覆盖
公共无效的onCreate(捆绑savedInstanceState)
{
Log.v(TAG活动状态:的onCreate());
super.onCreate(savedInstanceState);
的setContentView(R.layout.contact_manager); testGetContacts();
}
私人无效testGetContacts(){ ContentResolver的CR = getContentResolver(); 的String [] =投影新的String [] {Data._ID,
ContactsContract.Contacts.DISPLAY_NAME,Phone.TYPE}; 光标CUR = cr.query(ContactsContract.Data.CONTENT_URI,
投影,NULL,NULL,NULL);
如果(CUR = NULL&放大器;!&安培; cur.moveToFirst()){ 尝试{ INT IndexID为= cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
INT INDEXNAME = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
INT indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE); 而(cur.moveToNext()){
字符串ID = cur.getString(IndexID为);
字符串名称= cur.getString(INDEXNAME);
字符串PHONETYPE = cur.getString(indexPhoneType); 的System.out.println(ID +\\ n);
的System.out.println(名称+\\ n);
的System.out.println(PHONETYPE +\\ n);
} }赶上(的SQLException SQLE){
//这里处理异常 - 就像缺少列名!
} {终于//关闭你的光标,如果它是没有必要的!
如果(!cur.isClosed()){
cur.close();
}
}
}}
}
I want to retrieve both contacts name and their type in my layout.I am providing my activities and layout file.I am getting an invalid column type exception.any help would be greatly appreciable.thanks in advance.
TestActivity.class:
package application.test;
import android.app.ListActivity;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Data;
import android.view.LayoutInflater;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.content.ContentResolver;
import android.database.Cursor;
import android.database.SQLException;
public class TestActivity extends ListActivity
{
String name[];
String phoneType[];
ListView lview;
ListViewAdapter lviewAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
LinearLayout mainLayout=new LinearLayout(this);
mainLayout.setOrientation(LinearLayout.VERTICAL);
LayoutInflater layoutInflater = getLayoutInflater();
mainLayout.addView(layoutInflater.inflate(R.layout.main,null));
mainLayout.addView(layoutInflater.inflate(R.layout.extra,null));
this.addContentView(mainLayout, params);
lview = (ListView) findViewById(android.R.id.list);
getContacts();
lviewAdapter=new ListViewAdapter(this, name, phoneType);
lview.setAdapter(lviewAdapter);
}//onCreate
public void getContacts(){
int i=0;
ContentResolver cr = getContentResolver();
String[] projection = new String[] { Data._ID,
ContactsContract.Contacts.DISPLAY_NAME, Phone.TYPE};
Cursor cur = cr.query(ContactsContract.Data.CONTENT_URI,
projection, null, null, null);
if (cur != null && cur.moveToFirst()) {
try {
int indexID = cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
int indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE);
while (cur.moveToNext()) {
i++;
String id = cur.getString(indexID);
name[i] = cur.getString(indexName);
phoneType[i] = cur.getString(indexPhoneType);
}
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
if (!cur.isClosed()) {
cur.close();
}
}
}
}
}
ListViewAdapter.class
package application.test;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class ListViewAdapter extends BaseAdapter {
Activity context;
String name[];
String phoneType[];
public ListViewAdapter(Activity context,String[] name,String[] phoneType){
super();
this.context=context;
this.name=name;
this.phoneType=phoneType;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return name.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public class viewHolder {
TextView top;
TextView bottom;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
viewHolder holder;
if(convertView==null){
LayoutInflater inflator=context.getLayoutInflater();
convertView=inflator.inflate(R.layout.row,null);
holder=new viewHolder();
holder.top=(TextView)convertView.findViewById(R.id.toptext);
holder.bottom=(TextView)convertView.findViewById(R.id.bottomtext);
convertView.setTag(holder);
}else{
holder=(viewHolder)convertView.getTag();
}
holder.top.setText(name[position]);
holder.bottom.setText(phoneType[position]);
return convertView;
}
}
row.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:id="@+id/bottomtext"
android:singleLine="true"
android:ellipsize="marquee"
/>
</LinearLayout>
</LinearLayout>
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent" android:id="@+id/relativeLayout1"
android:layout_height="fill_parent">
<TextView android:id="@+id/textView1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:text="All Contacts" android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"></TextView>
<TextView android:id="@+id/textView2"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:text="Search " android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"></TextView>
<EditText android:layout_height="wrap_content" android:layout_width="180dp" android:id="@+id/editText1" android:layout_below="@+id/textView1" android:layout_toRightOf="@+id/textView2" android:layout_marginTop="18dp">
<requestFocus></requestFocus>
</EditText>
<Button android:layout_height="wrap_content"
android:text="Search" android:layout_width="wrap_content" android:id="@+id/button_searchContact"
android:layout_alignBottom="@+id/editText1" android:layout_toRightOf="@+id/editText1"></Button>
<ListView android:id="@android:id/list"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_marginBottom="70dp"
android:layout_alignParentLeft="true" android:layout_below="@+id/editText1"></ListView>
</RelativeLayout>
extra.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/commonButtons"
android:gravity="bottom">
<ImageButton android:background="@drawable/favorite" android:layout_width="65dp" android:id="@+id/button_favorites" android:layout_height="50dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="20dp"></ImageButton>
<ImageButton android:background="@drawable/recents" android:layout_width="65dp" android:id="@+id/button_recent" android:layout_height="50dp" android:layout_alignTop="@+id/button_favorites" android:layout_toLeftOf="@+id/button_contacts"></ImageButton>
<ImageButton android:background="@drawable/contacts" android:layout_width="65dp" android:id="@+id/button_contacts" android:layout_height="50dp" android:layout_alignTop="@+id/button_recent" android:layout_centerHorizontal="true"></ImageButton>
<ImageButton android:background="@drawable/keypad" android:layout_width="65dp" android:id="@+id/button_keypad" android:layout_height="50dp" android:layout_alignTop="@+id/button_contacts" android:layout_toLeftOf="@+id/button_about"></ImageButton>
<ImageButton android:background="@drawable/about" android:layout_width="65dp" android:id="@+id/button_about" android:layout_height="50dp" android:layout_alignTop="@+id/button_keypad" android:layout_alignParentRight="true"></ImageButton>
<TextView android:layout_width="wrap_content" android:text="Favorites"
android:id="@+id/textView1" android:layout_height="wrap_content"
android:layout_below="@+id/button_recent" android:layout_toLeftOf="@+id/button_recent"></TextView>
<TextView android:layout_width="wrap_content" android:text="Contacts"
android:id="@+id/textView3" android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2" android:layout_toLeftOf="@+id/button_keypad" android:layout_alignLeft="@+id/button_contacts"></TextView>
<TextView android:layout_width="wrap_content" android:text=" Recents" android:id="@+id/textView2" android:layout_height="wrap_content" android:layout_below="@+id/button_recent" android:layout_toRightOf="@+id/button_favorites" android:layout_alignRight="@+id/button_recent"></TextView>
<TextView android:layout_width="wrap_content" android:text=" Keypad"
android:id="@+id/textView4" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_toRightOf="@+id/button_contacts"
android:layout_toLeftOf="@+id/button_about"></TextView>
<TextView android:layout_width="wrap_content" android:text=" About"
android:id="@+id/textView5" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignLeft="@+id/button_about"
android:layout_alignParentRight="true"></TextView>
</RelativeLayout>
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="application.test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8"/>
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TestActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Here's my Activity class I tested the code with. The layout is not important, as the contact info is printed on the standard output (look in DDMS).
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts.Data;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public final class ContactManager extends Activity {
public static final String TAG = "ContactManager";
@Override
public void onCreate(Bundle savedInstanceState)
{
Log.v(TAG, "Activity State: onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_manager);
testGetContacts();
}
private void testGetContacts() {
ContentResolver cr = getContentResolver();
String[] projection = new String[] { Data._ID,
ContactsContract.Contacts.DISPLAY_NAME, Phone.TYPE};
Cursor cur = cr.query(ContactsContract.Data.CONTENT_URI,
projection, null, null, null);
if (cur != null && cur.moveToFirst()) {
try {
int indexID = cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
int indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE);
while (cur.moveToNext()) {
String id = cur.getString(indexID);
String name = cur.getString(indexName);
String phoneType = cur.getString(indexPhoneType);
System.out.println(id + "\n");
System.out.println(name + "\n");
System.out.println(phoneType + "\n");
}
} catch (SQLException sqle) {
//handle exception here - like missing column name!
} finally { //close your cursor if it's not needed!
if (!cur.isClosed()) {
cur.close();
}
}
}
}
}
这篇关于如何让Android通讯录类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!