如何让Android通讯录类型? [英] how to get contacts type in android?

查看:134
本文介绍了如何让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:机器人=htt​​p://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:机器人=htt​​p://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_centerHorizo​​ntal =真正的>< / 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:机器人=htt​​p://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_centerHorizo​​ntal =真正的>< / 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的>

的Andr​​oidManifest.xml:

 <?XML版本=1.0编码=UTF-8&GT?;
        <清单的xmlns:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆