Android:查看联系人列表中的电话号码? (电话号码检索电话号码)

我让BroadcastReceiver接收呼叫我的人的电话号码

 <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> 
  1. 如何检查电话号码是否在我的联系人列表中?
    你有一个小费,要知道这个电话号码是否存在联系人列表中与外面加载联系人列表?
    我不想要更多的信息,只要这个电话号码存在。

  2. 如果这是不可能的,我必须加载联系人列表,如何在BroadcastReceiver上做到这一点?
    当我尝试getContentResolver ,它不工作,因为我在BroadcastReceiver而不是在Activity

谢谢你的帮助

  • 监听器和接收器(Android)之间有什么区别?
  • 在Android的每个星期一重复报警使用AlarmManager / BroadcastReceiver
  • 清除最近的应用程序擦拭应用程序内存,我的接收器停止工作
  • ANR意向广播{act = android.intent.action.SCREEN_OFF flg = 0x50000010}
  • 广播接收机收到的意图是否可以为空?
  • BroadcastReceiver ACTION_MEDIA_BUTTON无法正常工作
  • Android上的BOOT_COMPLETED和QUICKBOOT_POWERON之间的区别
  • 获取接收者的意图filter
  •  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()) { return true; } } finally { if (cur != null) cur.close(); } return false; } 

    我认为这很重要,你需要在你的清单文件中添加以下内容。

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

    对于1,你应该看看推荐的ContactsContract.PhoneLookup提供程序

    代表查找电话号码结果的表格,例如来电号码。 要执行查找,您必须在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来调用属于上下文的方法

     ContentResolver cr=context.getContentResolver(); 

    我build议你使用Phone.CONTENT_FILTER_URI而不是PhoneLookup.CONTENT_FILTER_URI因为PhoneLookup可以是空的,你将不会得到任何结果(在LG-P500,froyotesting)

    在我的设备上的问题发生时,例如:

    1. 切换到飞行模式
    2. 使用默认的消息应用程序发送短信(将被排队)。
    3. 使用PhoneLookup.CONTENT_FILTER_URI查询联系人

    并非所有的设备似乎都受到影响

    使用PhoneLookup.CONTENT_FILTER_URI返回的游标总是空的。 使用Phone.CONTENT_FILTER_URI一切正常(如果有的话,你可以find联系人)。

    因此,我build议你总是使用Phone.*尤里斯,除非你真的需要使用PhoneLookup.* …通常只是地址簿同步相关的东西(大部分时间不是你感兴趣的)。