0

我正在编写一个 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);,我似乎得到了personnull 的值。

我尝试打印出光标的所有值(30 列),但找不到适合该值的其他列名。我知道消息可以映射到联系人,因为消息应用程序证明了这一点。

有没有人遇到过类似的问题以及如何解决?

4

1 回答 1

0

在某些 Android 手机中,人员列已被弃用。所以你不应该依赖这个专栏。不仅三星所有运行 4.1.2 及更高版本的索尼设备都会为您提供 null 值。

于 2013-07-12T05:06:11.913 回答