Android SMS API - PullRequest
       20

Android SMS API

7 голосов
/ 18 ноября 2009

Я знаю, что поставщик содержимого SMS не является частью общедоступного API (по крайней мере, не задокументировано), но если я правильно понимаю, все еще можно использовать многие функции SMS, если вы знаете, как использовать API ( ?).

Например, вставить SMS в свой почтовый ящик довольно просто:

 ContentValues values = new ContentValues();
 values.put("address", "+457014921911"); 
 contentResolver.insert(Uri.parse("content://sms"), values);

К сожалению, это не вызывает стандартное уведомление "новые SMS-сообщения". Можно ли вызвать это вручную?

Редактировать : AFAIK, «стандартное почтовое приложение (Сообщения)» в Android, прослушивает входящие SMS-сообщения с использованием разрешения android.permission.RECEIVE_SMS. И затем, когда пришло новое SMS, вставляется уведомление в строке состояния со «специальным» идентификатором уведомления. Таким образом, одно из решений моей проблемы (изложенное выше) может заключаться в том, чтобы найти и отправить правильное намерение вещания; что-то вроде "НОВОГО СМС ПРИБЫЛ" - намерение.

Редактировать : Загрузил стороннее приложение для обмена сообщениями ( chompsms ) с Android Market. Это приложение удовлетворяет мои потребности лучше. Когда я выполняю код выше chompsms, обратите внимание на новые смс и показывает «стандартное уведомление в строке состояния». Так что я бы сказал, что стандартное приложение Android Messaging не распознает смс правильно? Или я не прав?

Ответы [ 3 ]

6 голосов
/ 03 декабря 2009

К сожалению, код, ответственный за эти уведомления, скрыт в приложении обмена сообщениями . Класс MessagingNotification имеет метод static updateAllNotifications, который можно вызвать с помощью PathClassLoader и отражения:

PathClassLoader c = new PathClassLoader("/system/app/Mms.apk", getClassLoader());
Class.forName("com.android.mms.util.ContactInfoCache", true, c)
    .getMethod("init", Context.class).invoke(null, context);
Class.forName("com.android.mms.transaction.MessagingNotification", true, c)
    .getMethod("updateAllNotifications", Context.class).invoke(null, context);

Эта , очевидно, является очень плохой идеей по нескольким причинам, но я не могу придумать другой способ сделать то, что вы описали.

1 голос
/ 02 декабря 2009

Не могли бы вы вызвать PUSH-уведомление после SMS?

Тема: Поддерживает ли Android пуш-уведомление в режиме реального времени?

0 голосов
/ 18 ноября 2009

Может быть, вам следует заменить

content://sms

с

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