2011-11-02 62 views
0

我已經提出了一個應用程序,它調用了手機的聯繫人列表,但我想以我自己的方式處理聯繫人姓名和號碼。是否有任何方法可以在兩個不同的陣列中獲取數字和名稱? 這是我的代碼...一個活動,另外兩個是佈局..我試圖動態添加文本視圖列表視圖,但無法管理...可能是這就是爲什麼我沒有得到數字和名稱列表視圖.. 請幫助我。非常緊急..在此先感謝..如何在android應用程序的兩個不同數組中獲取聯繫人姓名和號碼?

package application.test;

import java.util.ArrayList; 

import android.app.ListActivity; 

import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.content.Intent; 
import android.database.Cursor; 

public class TestActivity extends ListActivity{ 



    private static final int PICK_CONTACT = 0; 

    /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState);  
    //content uri provide directory of people 
     Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 

     startActivityForResult(intentContact, PICK_CONTACT); 
    }//onCreate 

    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 

     if (requestCode ==PICK_CONTACT) 
     { 
      getContactInfo(intent);    
     } 



    }//onActivityResult 

    protected void getContactInfo(Intent intent) 
    { 
String name; 
     Cursor cursor = managedQuery(intent.getData(), null, null, null, null);  
     while (cursor.moveToNext()) 
     {   
      //contains row id 
      String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 

      name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
     //whether contact list atleast have a single contact or not 
      String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

      if (hasPhone.equalsIgnoreCase("1")) 
       hasPhone = "true"; 
      else 
       hasPhone = "false" ; 

      if (Boolean.parseBoolean(hasPhone)) 
      { 
      Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 
      while (phones.moveToNext()) 
      { 
       String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      }//end 
      phones.close(); 
      }//end 

     cursor.close(); 
     }//end while 


    }//end method 
}//end class........ 

<?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" 
    > 
<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 
<TextView 
    android:id="@+id/android:empty" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 
</LinearLayout>........ 

<?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> ......... 
+0

請通過此 HTTP一個ArrayList://計算器.COM /問題/ 866769 /如何對呼叫Android的聯繫人列表 –

+0

您需要參考的[鏈接] [1] [1]:http://stackoverflow.com/questions/ 866769/how-to-call-android-contacts-list –

+0

謝謝4信息... –

回答

1

希望你能夠通過查詢內容提供者獲取詳細信息。

如果是這樣,一旦你在你的光標獲得的信息可以在同一添加到你需要

For Eg: 
ArrayList <String> nameList = new ArrayList <String>() ; 
ArrayList <Integer> numberList = new ArrayList <Integer>() ; 
while (cur.movenext()){ 
    nameList.add (<get your data from cursor here>) ; 
    numberList.add (<get your data from cursor here>) ; 
} 

// Use the array list as you wish... 

希望這有助於

相關問題