![](/img/trans.png)
[英]How can I update the phone numbers of contacts in Android Studios
[英]ANDROID: How do I filter a list of Contacts with a CursorLoader based on a list of standardized phone numbers
我有一份電話號碼清單,我剝奪的全部都是十位數。 我想使用該列表在光標上進行過濾,但無法將傳入列表轉換為相同的格式(僅十位數字)。 我不能使用PhoneLookup.CONTENT_FILTER_URI
因為它只能與一個電話號碼進行比較,並且與PHONE_NUMBERS_EQUAL(
sqlite函數相同。這就是我目前的選擇聲明:
Contacts.DISPLAY_NAME_PRIMARY + "<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1" + " AND " + ContactsContract.CommonDataKinds.Phone.NUMBER + " IN (" + TextUtils.join(",", Collections.nCopies(registeredPhoneNumbers.size(), "?")) + ")";
它目前僅適用於某些電話號碼,但不適用於其他電話號碼(取決於我保存聯系人電話號碼的方式)。 關於如何使用CursorLoader使過濾器工作的任何想法?
尚未經過全面測試,但是您可以使用(或基於此的方法)刪除非數字並返回單個列。
在這種情況下,源表為(因此電話號碼為相關列):-
SQL:-
SELECT digit1||digit2||digit3||digit3||digit5||digit6||digit7||digit8||digit9||digit10||digit11||digit12||digit13||digit14 AS converted FROM
(SELECT
substr(phonenumber,1,1) AS testdigit1, length(phonenumber),
CASE
WHEN substr(phonenumber,1,1) < '0' OR substr(phonenumber,1,1) > '9' THEN '' ELSE substr(phonenumber,1,1) END AS digit1,
CASE
WHEN substr(phonenumber,2,1) < '0' OR substr(phonenumber,1,1) > '9' THEN '' ELSE substr(phonenumber,2,1) END AS digit2,
CASE
WHEN substr(phonenumber,3,1) < '0' OR substr(phonenumber,1,1) > '9' THEN '' ELSE substr(phonenumber,3,1) END AS digit3 ,
CASE
WHEN substr(phonenumber,4,1) < '0' OR substr(phonenumber,1,1) > '9' THEN '' ELSE substr(phonenumber,4,1) END AS digit4,
CASE
WHEN substr(phonenumber,5,1) < '0' OR substr(phonenumber,1,1) > '9' THEN '' ELSE substr(phonenumber,5,1) END AS digit5,
CASE
WHEN substr(phonenumber,6,1) < '0' OR substr(phonenumber,6,1) > '9' THEN '' ELSE substr(phonenumber,6,1) END AS digit6,
CASE
WHEN substr(phonenumber,7,1) < '0' OR substr(phonenumber,7,1) > '9' THEN '' ELSE substr(phonenumber,7,1) END AS digit7,
CASE
WHEN substr(phonenumber,8,1) < '0' OR substr(phonenumber,8,1) > '9' THEN '' ELSE substr(phonenumber,8,1) END AS digit8,
CASE
WHEN substr(phonenumber,9,1) < '0' OR substr(phonenumber,9,1) > '9' THEN '' ELSE substr(phonenumber,9,1) END AS digit9,
CASE
WHEN length(phonenumber) >= 10 AND substr(phonenumber,10,1) >= '0' AND substr(phonenumber,10,1) <= '9' THEN substr(phonenumber,10,1) ELSE '' END AS digit10,
CASE
WHEN length(phonenumber) >= 11 AND substr(phonenumber,11,1) >= '0' AND substr(phonenumber,11,1) <= '9' THEN substr(phonenumber,11,1) ELSE '' END AS digit11,
CASE
WHEN length(phonenumber) >= 12 AND substr(phonenumber,12,1) >= '0' AND substr(phonenumber,12,1) <= '9' THEN substr(phonenumber,12,1) ELSE '' END AS digit12,
CASE
WHEN length(phonenumber) >= 13 AND substr(phonenumber,13,1) >= '0' AND substr(phonenumber,13,1) <= '9' THEN substr(phonenumber,13,1) ELSE '' END AS digit13,
CASE
WHEN length(phonenumber) >= 14 AND substr(phonenumber,14,1) >= '0' AND substr(phonenumber,14,1) <= '9' THEN substr(phonenumber,14,1) ELSE '' END AS digit14
FROM phonenumbers)
您只需對此進行合並,並進行適當的更改(如果我正確理解以替換ContactsContract.CommonDataKinds.Phone.NUMBER)。
應用上面的SQL結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.