我正在编写一个Android应用程序,它将显示每个用户联系人发送的消息数量。我已经在我的Nexus S(Android 4.1.2)上测试了应用程序,它正在按预期工作。现在,前几天我在Galaxy S Duos(Android 4.0.1)上测试相同的应用程序,我无法看到联系方式。我使用的代码如下所示。
public static String SMS_URI_INBOX = "content://sms/inbox";
Uri parsedUri = Uri.parse(SMS_URI_INBOX);
String[] projection = new String[] { "_id", "address", "person" };
Cursor cursor = contentResolver.query(parsedUri, projection, null, null, null);
if (cursor.getCount() > 0) {
String person;
int personIndex = cursor.getColumnIndex("person");
if (cursor.moveToFirst())
do {
// The person will be the foreign key from the Contacts table
person = cursor.getString(personIndex);
if (person != null) {
// Add this person to a list
}
} while (cursor.moveToNext());
}
cursor.close();
在运行TouchWiz的三星设备上,在person = cursor.getString(personIndex);
行,我似乎将person
的值设为null。
我尝试打印出光标的所有值(30列),但找不到适合此值的其他列名。我知道消息可以映射到联系人,因为消息应用程序证明了它。
有没有人遇到类似问题以及如何解决?
答案 0 :(得分:0)
在某些Android手机中,不推荐使用person列。所以你不应该依赖这个专栏。不仅三星所有运行4.1.2及更高版本的索尼设备都会给你空值。