我正在编写一个应用程序,该应用程序可以读取本人和特定联系人之间的任意数量的短信。我已经能够从ContactsContract.Contacts.CONTENT_URI获取Lookup_key,但是目前尚不清楚如何以类似的方式获取短信。
我尝试使用ContactsContract.CommonDataKinds.Phone将Lookup_key与电话号码进行匹配,然后使用该电话号码来挑选短信。但是,任何联系人的电话号码始终返回“ 5”。这是我的下面查询。
这是电话查询的样子:
@SuppressLint("InlinedApi")
private static final String[] PHONE_PROJECTION = {
ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY,
ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER
};
@SuppressLint("InlinedApi")
private static final String PHONE_SELECTION = ContactsContract.Data.LOOKUP_KEY + " = ?";
然后我通过游标加载器执行查询:
return new CursorLoader(
getApplicationContext(),
ContactsContract.Data.CONTENT_URI,
PHONE_PROJECTION,
PHONE_SELECTION,
phoneSelectionArgs,
null
);
最后,我拉号码:
phoneNumber = cursor.getString(cursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
但是始终为5。它从不返回实际的电话号码。这是查询电话号码的正确方法吗?有没有更好的方法来读取来自特定联系人的消息?