Android 2.2 Читайте SMS Входящие сообщения - PullRequest
0 голосов
/ 30 августа 2011

Я могу читать SMS Входящие и отображать все сообщения. У меня две проблемы. Во-первых, поле person всегда NULL.

Это мой запрос к "content: // sms / inbox".

Cursor cursor = context.getContentResolver().query(SMS_INBOX_CONTENT_URI,
           new String[] { "_id", "thread_id", "address", "person", "date", "body" },
                     null,
                     null,
                     SORT_ORDER);

Поле персонажа всегда NULL. Есть ли способ получить фактическое отображаемое имя для этого SMS-сообщения? Есть ли соединение с другой таблицей для получения отображаемого имени?

Во-вторых, когда я тестировал на своем телефоне, я заметил, что мои SMS-сообщения не включены в запрос. Почему это так? Можно ли это исправить?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 16 сентября 2011

Попробуйте этот код:

public String findNameByAddress(Context ct,String addr)
        {
             Uri myPerson = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI,
                        Uri.encode(addr));

             String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME };

                Cursor cursor = ct.getContentResolver().query(myPerson,
                        projection, null, null, null);

                if (cursor.moveToFirst()) {



                    String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));


                    Log.e("","Found contact name");

                    cursor.close();

                    return name;
                }

                cursor.close();
                Log.e("","Not Found contact name");

                return addr;
        }
0 голосов
/ 23 сентября 2011

Также имейте в виду, что пользователь sms / inbox не соответствует напрямую столбцу contacts.contract._id, если в телефоне несколько учетных записей. См. http://developer.android.com/reference/android/provider/ContactsContract.html для справки.

0 голосов
/ 30 августа 2011
The person field is always NULL. Is there a way to retrieve the actual display name for


this SMS message? Is there a join to another table to retrieve display name?

Для отображаемого имени вы используете другой запрос и курсор, или вы можете присоединиться к запросу, чтобы получить имя человека, но иногда вы не получали имя, потому что контакт этого человека не сохранен в вашем списке контактов или любом другом.другая организация или компания отправит сообщение, после чего вы не получите имя, поэтому в этот момент вы можете запросить таблицу контактов, чтобы получить имя, если оно найдено, и вы можете отобразить его, в противном случае отобразить адрес по умолчанию.

В этом вы получили адрес, который был адресом отправителя, как в числовом формате, поэтому вам нужно передать этот номер в запросе контакта, чтобы получить имя этого человека

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...