Обнаружение MMS сообщения на Android

Я искал в Интернете эту тему и не нашел удовлетворительного ответа ... Пытаюсь обнаружить MMS-сообщения (входящие хотя бы для начала). И я решил пройти путь обнаружения изменений в содержимом. Я загрузил коды Android и убедился, что использую правильный поставщик контента: "content: // mms" (в классе android.provider.Telephony.Mms) и использую все необходимые разрешения (из приложения Mms) Я придумал пример приложения, которое обнаруживает входящие сообщения MMS, но не обнаруживает их. вот приложение:

package com.kolomiyets.MMStesting;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;

public class MMStesting extends Activity {

public static final String MMSMON_RECEIVED_MMS = "MMStesting.intent.action.MMSMON_RECEIVED_MMS";

Uri mmsInURI = Uri.parse("content://mms");

ContentObserver mmsObserver = new ContentObserver(null) {
    @Override
    public void onChange(boolean selfChange) {

        Thread mmsNotify = new Thread(){
            @Override
            public void run() {
                Intent mIntent = new Intent(MMSMON_RECEIVED_SMS);
                sendBroadcast(mIntent);
                super.run();
            }
        };
        mmsNotify.start();
        super.onChange(selfChange);
    }
};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    BroadcastReceiver mmsMonitorBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            TextView log = (TextView)findViewById(R.id.mms_log);
            log.append("\n MMS Received;");
        }
    };

    IntentFilter mIntentFilter = new IntentFilter();
    mIntentFilter.addAction(MMSMON_RECEIVED_MMS);

    registerReceiver(mmsMonitorBroadcastReceiver, mIntentFilter);

    getApplicationContext().getContentResolver().registerContentObserver(mmsInURI, true, mmsObserver);
    getApplicationContext().getContentResolver().notifyChange(mmsInURI, mmsObserver);


}

@Override
protected void onDestroy() {
    getApplicationContext().getContentResolver().unregisterContentObserver(mmsObserver);
    super.onDestroy();
}
}

и манифест:

























    
        
            
            
        
    


Пока я пробовал "content: // mms-sms", и приложение начинает бесконечно что-то обнаруживать после того, как устройство получает сообщение MMS. В строке состояния нет индикации о новом MMS (как и должно быть), однако сообщение появляется во входящих сообщениях o_O ...

Также попробовал поставить «content: // sms» и все работает как положено to (обнаружение входящих и исходящих SMS и даже MMS o_O)

Я что-то неправильно понял? Есть ли способ исправить мое приложение, чтобы оно обнаруживало изменения в "content: // mms"? Если это не работает в этом приложении, я не смогу использовать этот контент в своих запросах к базе данных? Если я обнаружу изменения с помощью «content: // sms», как я могу отличить SMS от MMS? (Хотелось бы получить и то, что есть в MMS). Или, может быть, лучше всего просто взять все эти классы из источников Android и попытаться изменить их так, как я хочу? ... Но я бы не хотел этого делать)))

Вот класс

grepcode.com: Telephony, который содержит код MMS (также этот сайт удобен для просмотра исходного кода Android)

Эта информация в некоторой степени описывает, как получить информацию из сообщений MMS, которые находятся в базе данных. Однако я все еще не могу понять, как обнаруживать входящие и исходящие MMS-сообщения.

Мне кажется, что я должен отслеживать «content: // sms», чтобы обнаруживать MMS (поскольку «content: // sms» реагирует на входящие MMS, а «content: // mms» - нет) , а не работать с "content: // mms" через Cursor и ContentResolver.

Но я не уверен, что это правильный путь ... Также я не понимаю, что на самом деле представляет собой Part (или PduPart) ... получу ли я полное изображение, извлекая Part из MMS, или это будет частью изображения? И есть ли разница между «content: // mms // part» и «content: // mms / part /»?

Здесь также есть интересный момент с сообщениями WAP Push. Насколько я понял, они представляют собой какие-то особые SMS-сообщения с гиперссылками, а также используются для передачи конфигураций от мобильного провайдера на телефон клиента. Этот класс:

code.google.com: MmsReceiver.java должен обнаруживать MMS-сообщения с помощью WAP Push Massages.

Я действительно не могу понять это. Как?

10
задан Brad Larson 31 March 2011 в 17:11
поделиться