gpt4 book ai didi

android - 从 Android 联系人数据库获取联系人 ID 未按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:30 24 4
gpt4 key购买 nike

我有以下代码。

        int phoneContactID = new Random().nextInt();

Cursor contactLookupCursor = context.getContentResolver().query( Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(contactNumber)), new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID},null,null,null);

try
{
contactLookupCursor.moveToFirst();
while(contactLookupCursor.moveToNext())
{
phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID));
}
}
finally
{
contactLookupCursor.close();
}

上面代码中的问题是,即使我在模拟器联系人中提供了一个现有号码,它也不会返回任何结果。一个小时前我正在测试它并且它工作正常,现在当我再次测试它时,它没有返回任何东西。我不确定代码是否有问题。我想要做的是获得一个与单个号码和多个号码相匹配的 ID。例如,假设有一个名为“A”的联系人姓名,A 有两个号码。基本上,无论我指的是哪个号码,A 的联系人 ID 都应该是 1。我的假设是否正确?

更新:我做了更多测试。假设联系人数据库中存储的号码没有国家代码,例如 222-222-2222。使用以下代码的搜索仅在我传递 2222222222 或 222-222-2222 时返回联系人 ID。如果相同的号码存储为 12222222222,则仅当我搜索号码为 12222222222 时才会收到有效的联系人 ID。

        String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone._ID,ContactsContract.CommonDataKinds.Phone.CONTACT_ID};
Uri contactUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(contactNumber));
Cursor c = context.getContentResolver().query(contactUri, projection, null, null, null);
if (c.moveToFirst()) {
phoneContactID = c.getInt(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
}

我不确定我在这里做错了什么。任何帮助将不胜感激。

最佳答案

public static int getContactIDFromNumber(String contactNumber,Context context)
{
contactNumber = Uri.encode(contactNumber);
int phoneContactID = new Random().nextInt();
Cursor contactLookupCursor = context.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,contactNumber),new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, null, null, null);
while(contactLookupCursor.moveToNext()){
phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID));
}
contactLookupCursor.close();

return phoneContactID;
}

现在有效的代码。

关于android - 从 Android 联系人数据库获取联系人 ID 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7356796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com