Android 从用户获取联系人';s电话
我正在使用firebase(用于后端)开发一个简单的messenger应用程序。我希望将用户的联系人电话号码与存储在我的数据库中的联系人电话号码进行比较,这样用户就可以查看经过优化的联系人列表。我已经在谷歌上查过了,但我找不到一种方法来获取存储在单独变量中的数字。我在堆栈溢出中的另一篇文章中尝试了下面的代码,但在getactivity中遇到一个错误,错误是“无法解析方法”Android 从用户获取联系人';s电话,android,firebase,contacts,android-contacts,data-retrieval,Android,Firebase,Contacts,Android Contacts,Data Retrieval,我正在使用firebase(用于后端)开发一个简单的messenger应用程序。我希望将用户的联系人电话号码与存储在我的数据库中的联系人电话号码进行比较,这样用户就可以查看经过优化的联系人列表。我已经在谷歌上查过了,但我找不到一种方法来获取存储在单独变量中的数字。我在堆栈溢出中的另一篇文章中尝试了下面的代码,但在getactivity中遇到一个错误,错误是“无法解析方法” 如果您在Activity中使用该代码,则我认为不需要getActivity(),您可以直接调用getContentResol
如果您在Activity中使用该代码,则我认为不需要getActivity(),您可以直接调用getContentResolver(),但如果仍然不起作用,请尝试获取联系人和其他详细信息。我正在从我的一个项目中复制代码,希望您能理解
ArrayList<DeviceContacts> contactsList = new ArrayList<DeviceContacts>();
Cursor cur = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
// read id
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
/** read names **/
displayName = null;
displayName = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
/** read image uri's **/
imageuri = null;
imageuri = cur
.getString(cur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI));
/** Phone Numbers **/
Cursor pCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id }, null);
number = null;
typeStr = null;
while (pCur.moveToNext()) {
number = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
typeStr = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
Log.i("ContactsList", "Contact number :" + number);
Log.i("ContactsList", "Number type :" + typeStr);
}
pCur.close();
/** EMAIL **/
Cursor emailCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = ?", new String[] { id }, null);
email = null;
while (emailCur.moveToNext()) {
email = emailCur
.getString(emailCur
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
DeviceContacts dContacts = new DeviceContacts(); // simple model class
dContacts.setDisplayName(displayName);
dContacts.setmNumber(number);
dContacts.setEmail(email);
dContacts.setImageUri(imageuri);
contactsList.add(dContacts);
emailCur.close();
}
}
cur.close();
ArrayList contactsList=new ArrayList();
游标cur=getContentResolver().query(
Contacts contract.Contacts.CONTENT_URI,null,null,null,null);
如果(cur.getCount()>0){
while(cur.moveToNext()){
//读取id
字符串id=cur.getString(cur
.getColumnIndex(Contacts contract.Contacts._ID));
/**读名字**/
displayName=null;
displayName=cur
.getString(cur)
.getColumnIndex(Contacts contract.Contacts.DISPLAY_NAME));
/**读取图像uri的**/
imageuri=null;
imageuri=cur
.getString(cur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.PHOTO_URI));
/**电话号码**/
游标pCur=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,
无效的
Contacts contract.CommonDataTypes.Phone.CONTACT\u ID
+“=?”,新字符串[]{id},null);
数字=空;
typeStr=null;
while(pCur.moveToNext()){
数字=pCur
.getString(pCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
类型str=pCur
.getString(pCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.TYPE));
日志i(“联系人列表”,“联系人号码:”+编号);
Log.i(“联系人列表”,“号码类型:”+typeStr);
}
pCur.close();
/**电子邮件**/
游标emailCur=getContentResolver().query(
ContactsContract.CommonDataTypes.Email.CONTENT\u URI,
无效的
ContactsContract.CommonDataTypes.Email.CONTACT\u ID
+“=?”,新字符串[]{id},null);
电子邮件=空;
while(emailCur.moveToNext()){
email=emailCur
.getString(emailCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Email.DATA));
}
DeviceContacts dContacts=新DeviceContacts();//简单模型类
dContacts.setDisplayName(displayName);
dContacts.setmNumber(数字);
dContacts.setEmail(电子邮件);
dContacts.setImageUri(imageuri);
联系人列表。添加(数据联系人);
emailCur.close();
}
}
cur.close();
希望这能有所帮助谢谢穆克什的回复。。。我将试用该代码,并向您提供反馈:)继续并取得成功:)
ArrayList<DeviceContacts> contactsList = new ArrayList<DeviceContacts>();
Cursor cur = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
// read id
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
/** read names **/
displayName = null;
displayName = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
/** read image uri's **/
imageuri = null;
imageuri = cur
.getString(cur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI));
/** Phone Numbers **/
Cursor pCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id }, null);
number = null;
typeStr = null;
while (pCur.moveToNext()) {
number = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
typeStr = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
Log.i("ContactsList", "Contact number :" + number);
Log.i("ContactsList", "Number type :" + typeStr);
}
pCur.close();
/** EMAIL **/
Cursor emailCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = ?", new String[] { id }, null);
email = null;
while (emailCur.moveToNext()) {
email = emailCur
.getString(emailCur
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
DeviceContacts dContacts = new DeviceContacts(); // simple model class
dContacts.setDisplayName(displayName);
dContacts.setmNumber(number);
dContacts.setEmail(email);
dContacts.setImageUri(imageuri);
contactsList.add(dContacts);
emailCur.close();
}
}
cur.close();