Получать трансляции при отправке смс - PullRequest
1 голос
/ 16 марта 2012

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

---------- // решение -----------

  public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(VIEW_RESOURCE_ID);

            SendSmsObserver smsObeserver = (new SendSmsObserver(new Handler()));
            ContentResolver contentResolver = this.getContentResolver();
            contentResolver.registerContentObserver(Uri.parse("content://sms"),true, smsObeserver);
        }


    public class SendSmsObserver extends ContentObserver {

            public SendSmsObserver(Handler handler) {
                super(handler);
            }

            @Override
            public void onChange(boolean selfChange) {
                super.onChange(selfChange);
                // save the message to the SD card here

                 Log.d("sent sms", "one text send");

            }
        }

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Я нашел ответ

public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(VIEW_RESOURCE_ID);

                SendSmsObserver smsObeserver = (new SendSmsObserver(new Handler()));
                ContentResolver contentResolver = this.getContentResolver();
                contentResolver.registerContentObserver(Uri.parse("content://sms"),true, smsObeserver);
            }


        public class SendSmsObserver extends ContentObserver {

                public SendSmsObserver(Handler handler) {
                    super(handler);
                }

                @Override
                public void onChange(boolean selfChange) {
                    super.onChange(selfChange);
                    // save the message to the SD card here

                     Log.d("sent sms", "one text send");

                }
            }
1 голос
/ 16 марта 2012

Вы можете использовать CallLog . Поставщик CallLog содержит информацию о размещенных и принятых вызовах.

Следующий код может работать

Cursor c = null; try {
    c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
    if (c != null && c.moveToFirst()) {
        do {
            int duration = c.getInt(c.getColumnIndex(CallLog.Calls.DURATION));
            // do something with duration
        } while (c.moveToNext());
    } } finally {
    if (c != null) {
        c.close();
    } }

-------------------------- ДОБАВЛЕНО НОВОЕ РЕШЕНИЕ ------------------ ------

Посмотрите на: http://groups.google.com/group/android-developers/browse_thread/thread/9bc7d7ba0229a1d2

и: http://code.google.com/p/android/issues/detail?id=914

В принципе, вы можете сделать это, зарегистрировав наблюдателя контента в SMS магазин сообщений. Попробуйте это:

  ContentResolver contentResolver = this.getContentResolver();
        contentResolver.registerContentObserver(Uri.parse("content://sms"),true, smsObeserver);
...