Android从联系人列表中获取电话号码

Android从联系人列表中获取电话号码,第1张

概述我有这些代码基本上使用ListView来显示联系人列表中的名称,我想在单击每个单一名称时获取他们的电话号码:finalContentResolvercr=getContentResolver();finalCursorc=cr.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);myCursorAdapter=new

我有这些代码基本上使用ListVIEw来显示联系人列表中的名称,我想在单击每个单一名称时获取他们的电话号码:

final ContentResolver cr = getContentResolver();final Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);myCursorAdapter = new SimpleCursorAdapter(this, R.layout.List_item, c, new String[] {ContactsContract.Contacts.disPLAY_name}, new int[]{R.ID.TVRow}, 0);myPhoneList.setAdapter(myCursorAdapter);myPhoneList.setonItemClickListener(new AdapterVIEw.OnItemClickListener(){    @OverrIDe    public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID){        c.movetoposition(position);        Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)), Toast.LENGTH_SHORT).show();    }});

在onItemClick方法中

    GetColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)

返回-1,因此我无法使用此方法获取电话号码.

我还尝试打印出光标c的所有列,它返回34列,但唯一与电话号码相关的列是HasPhoneNumber.

那么问题在哪里,我该如何解决?谢谢!

更新版本,其中传递给构造myCursorAdapter的String数组已更改:

final ContentResolver cr = getContentResolver();    final Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);    myCursorAdapter = new SimpleCursorAdapter(this, R.layout.List_item, c, new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER}, new int[]{R.ID.TVRow}, 0);    myPhoneList.setAdapter(myCursorAdapter);    myPhoneList.setonItemClickListener(new AdapterVIEw.OnItemClickListener(){        @OverrIDe        public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID){            c.movetoposition(position);            Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)), Toast.LENGTH_SHORT).show();        }    });

我想更新后的代码会在ListVIEw中显示电话号码,但我收到一条错误,说“列’data1’不存在”.

解决方法:

ContactsContract AndroID API在“数据”表中存储有关电话号码等联系人的数据,而不是“联系人”表.

仔细阅读:https://developer.android.com/reference/android/provider/ContactsContract.html.

更新 – 这是您的代码的固定版本(未经测试):

final ContentResolver cr = getContentResolver();String[] projection = new String[] {Contacts.disPLAY_name, Phone.NUMBER};final Cursor c = cr.query(Data.CONTENT_URI, projection, null, null, null);myCursorAdapter = new SimpleCursorAdapter(this, R.layout.List_item, c, new String[] {Phone.NUMBER}, new int[]{R.ID.TVRow}, 0);myPhoneList.setAdapter(myCursorAdapter);myPhoneList.setonItemClickListener(new AdapterVIEw.OnItemClickListener(){    @OverrIDe    public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID){        c.movetoposition(position);        Toast.makeText(getApplicationContext(), c.getString(1), Toast.LENGTH_SHORT).show();    }});
总结

以上是内存溢出为你收集整理的Android从联系人列表中获取电话号码全部内容,希望文章能够帮你解决Android从联系人列表中获取电话号码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108569.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存