获取联系人在Android的

获取联系人在Android的

问题描述:

我想在Android上的联系号码,但据我发现了一个教程,它提出了数升序排列,而不是在它们出现在接触的顺序...获取联系人在Android的

我如何修改代码以从我的联系人列表中按照确切的顺序获取数字?

Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, new String[]{Phone.NUMBER}, null,null, null); 
ArrayList <String> nr_formatat = new ArrayList <String>(); 
if (cursor != null) { 

    while (cursor.moveToNext() == true) 

     nr_formatat.add(cursor.getString(cursor.getColumnIndex(Phone.NUMBER))); 
    } 
+1

联系人列表的默认订单按字母升序排列。除非您以任意顺序*地重新排列您的联系人列表,在这种情况下,您的本地通讯录应用程序将处理/存储该订单。那是你在做什么? –

+0

假设我有联系人名单:(Anna,0342),(Lulu,0311),(John,0088);它们出现的顺序是:0088,0311,0342所以按升序排列,而我真的希望他们通过姓名字母顺序:0342,0311,0088感谢您 – Madrugada

这取决于您的联系人在联系人列表中的排列方式。点击菜单按钮并点击“显示选项”。除此之外,您的问题中没有足够的信息来充分回答问题。

从我所看到的,你会以错误的方式去做。我会查看这个示例应用程序。它会以不同于您的方式提取联系人,并允许您根据需要对其进行排序。

http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/index.html

+0

这是按字母顺序排列,但得到的数字是按升序排列: (如你所知,我们从两个不同的地方获得联系人姓名和电话号码,我按字母顺序获得姓名,而数字是递增的,我希望我能得到他们之间的对应关系,我必须显示联系人列表 – Madrugada

你会了解它的错误的方式。您需要根据CONTACT_ID查询号码,否则两者之间不会有任何对应关系。看看this tutorial

+0

谢谢(pCur.moveToNext()){ \t \t //用手机做点什么 \t} – Madrugada

+0

你不必改变你得到这个循环的方式吗?电话号码,你仍然可以使用getColumnIndex(Phone.NUMBER)方法。唯一的变化是查询sqlite数据库。 –

以下应工作,如果: (安娜,0342)具有ID 1,(露露,0311)已ID 2,(约翰,0088)具有ID 3

Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, new String[]{Phone.NUMBER}, null,null, new String[]{Phone.ID}); 
ArrayList <String> nr_formatat = new ArrayList <String>(); 
if (cursor != null) { 

    while (cursor.moveToNext() == true) 

     nr_formatat.add(cursor.getString(cursor.getColumnIndex(Phone.NUMBER))); 
    } 

ContentResolver的的最后一个变量() .query()采用sortorder。因此,如果您的联系人列表也在ID上进行排序,则可以在此处添加ID等内容。 ConecntResolver().Query() info here.