簡體   English   中英

Android:檢查聯系人列表中的電話號碼? (電話號碼從電話中檢索)

[英]Android : Check phone number present in Contact List ? (Phone number retrieve from phone call)

我制作了一個BroadcastReceiver來接收給我打電話的人的電話號碼

<intent-filter>
<action
    android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
  1. 如何檢查收到的電話號碼是否在我的聯系人列表中?
    您有什么提示可以在不加載聯系人列表的情況下知道此電話號碼是否存在於聯系人列表中?
    我不想要更多信息,只要這個電話號碼存在。

  2. 如果不可能,我必須加載聯系人列表,如何在BroadcastReceiver上執行此操作?
    當我嘗試執行getContentResolver ,它不起作用,因為我在BroadcastReceiver而不是在Activity ...

謝謝你的幫助

public boolean contactExists(Context context, String number) {
   /// number is the phone number
   Uri lookupUri = Uri.withAppendedPath(
   PhoneLookup.CONTENT_FILTER_URI, 
   Uri.encode(number));
   String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };
   Cursor cur = context.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
   try {
      if (cur.moveToFirst()) {
         cur.close();
         return true;
   }
   } finally {
   if (cur != null)
      cur.close();
   }
   return false;
}

我認為重要的是說您需要在清單文件中添加以下內容。

<uses-permission android:name="android.permission.READ_CONTACTS" /> 

對於 1 你應該看看推薦的ContactsContract.PhoneLookup provider

表示查找電話號碼的結果的表格,例如來電顯示。 要執行查找,您必須將要查找的數字附加到 CONTENT_FILTER_URI。 這個查詢是高度優化的。

Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Cursor mycursor=resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,...
if (mycursor!=null && mycursor.moveToFirst()) {
// record exists
}

對於 2,您可以使用 onReceive 方法中的context來調用屬於 Context 的方法

ContentResolver cr=context.getContentResolver();

我建議你使用Phone.CONTENT_FILTER_URI而不是PhoneLookup.CONTENT_FILTER_URI因為 PhoneLookup 可以為空並且你有時不會得到結果(在 LG-P500 上測試,froyo)

我的設備上的問題例如在以下情況下發生:

  1. 切換到飛行模式
  2. 使用默認消息應用程序發送短信(將排隊)。
  3. 使用PhoneLookup.CONTENT_FILTER_URI查詢聯系人

並非所有設備似乎都受到影響

使用PhoneLookup.CONTENT_FILTER_URI返回的游標始終為空。 使用Phone.CONTENT_FILTER_URI一切正常(如果有的話,您可以找到聯系人)。

因此,我建議您始終使用Phone.* Uris,除非您確實需要使用PhoneLookup.* ... 這通常只是與地址簿同步相關的東西(而且大多數時候不是您感興趣的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM