我正在尝试找出是否来自 Android 中的收藏夹联系人的来电。到目前为止,我的代码是:
public class PhoneCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
if (state == TelephonyManager.CALL_STATE_RINGING) {
if (ContactHelper.fromFavourites(context, incomingNumber)) {
//do stuff
}
}
};
我的 ContactHelper 是这样的:
public static boolean fromFavourites(Context context, String phoneNumber) {
final String[] projection = new String[] {ContactsContract.PhoneLookup._ID};
Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); //use this to look up a phone number
Cursor cursor = context.getContentResolver().query(lookupUri, projection, "starred=?", new String[] { "1" }, null);
if (cursor != null && cursor.getCount() != 0) {
System.out.println("OUTPUT: "+cursor0.getCount());
return true;
} else return false;
}
我已经尝试过这个解决方案,但它只给了我所有最喜欢的联系人。我正在尝试使用 PhoneLookup 因为来自Android doc,它说
联系人表中的列也可通过连接获得。
所以我想我可以查询 PhoneLookUp 和 Contacts 表之间的连接,但内容提供者似乎无法进行连接。我打算为此编写一个原始 SQLite 脚本,但我不知道如何加入 PhoneLookUp 和联系人表,找不到他们的外键 :( 感谢所有帮助