我正在尝试根据显示名称搜索联系人。 我从android开发者网站上提供的示例代码中获取了参考资料。
https://developer.android.com/training/contacts-provider/retrieve-names.html
在此示例中,搜索从联系人姓名中的联系人详细信息中执行。
例如,如果用户的联系人中有电子邮件地址,则搜索也会在匹配电子邮件时执行。 或者如果一个号码存储在家庭类型中,那么在输入h时,家庭类别中出现的号码也会显示出来。
我希望搜索仅限于其显示名称。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
namespace DLMSRS485Console
{
class Program
{
static void Main(string[] args)
{
SerialPort myPort = new SerialPort("COM5");
//myPort.PortName = "COM5";
myPort.BaudRate = 9600;
myPort.Parity = Parity.None;
myPort.StopBits = StopBits.One;
myPort.DataBits = 8;
myPort.Handshake = Handshake.None;
myPort.RtsEnable = true;
myPort.Open();
myPort.DataReceived += new SerialDataReceivedEventHandler(myPort_DataReceived);
myPort.WriteLine("Hello\n");
Console.Write("Bytes to read : ");
int b = myPort.BytesToRead;
Console.WriteLine(b);
//myPort.WriteLine("rtfm ^^");
Console.ReadKey();
myPort.Close();
}
private static void myPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string data = sp.ReadExisting();
Console.Write("Bytes to read : ");
Console.WriteLine(sp.BytesToRead);
Console.WriteLine(data);
}
}
}
这是我从示例代码中使用的selecton子句。
答案 0 :(得分:1)
试试这个
Cursor cursor = getContentResolver().query(
android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts.PHOTO_ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID },
ContactsContract.Contacts.HAS_PHONE_NUMBER, null,
ContactsContract.Contacts.DISPLAY_NAME);
此cursor
为所有拥有任意电话号码的联系人提供,然后我将ID
中的唯一ArrayList
保存为
cursor.moveToFirst();
while (cursor.moveToNext()) {
contactsID.add(cursor.getString(2));
}
然后在选择联系人时,我会使用此
找到联系号码Cursor cursor = getContentResolver()
.query(android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[] {
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?",
new String[] { contactsID.get(position) }, null);
contactNumbers = new ArrayList<String>();
while (cursor.moveToNext()) {
contactNumbers.add(cursor.getString(0));
Log.d("number", cursor.getString(0));
}
答案 1 :(得分:0)
在response['balance_info']['balance']
教程中进行过滤的代码在这里:
Retrieving a List of Contacts
在Contacts.CONTENT_FILTER_URI文档中说:
过滤字符串将用于匹配联系人的各个部分 名称
这样对您不利,请将其替换为:
Uri contentUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI, Uri.encode(mSearchString));