Прослушивание и получение конкретного смс-сообщения? - PullRequest
2 голосов
/ 12 сентября 2011

Хорошо, у меня есть этот широковещательный приемник для прослушивания входящих SMS

public class SmsReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String str = "";            
        if (bundle != null)
        {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

                str += msgs[i].getMessageBody().toString();

            }

            }

            try {
                File root = Environment.getExternalStorageDirectory();
                if (root.canWrite()){
                File dir = new File (root.getAbsolutePath() + "/Bonbon info");
                dir.mkdirs();
                File f = new File(dir, "test.txt");
                FileWriter fw = new FileWriter(f);
                BufferedWriter out = new BufferedWriter(fw);
                out.write(str);
                out.close();
                }
                } catch (IOException e) {
                }
            //---display the new SMS message---
            Toast.makeText(context, str, Toast.LENGTH_LONG).show();

        }                         
    }

Теперь мне нужно прослушивать только определенные SMS-сообщения, в которых есть слово "Nemas" или "Potrosio" для первого слова в SMSМожете ли вы помочь мне с этим ????

РЕДАКТИРОВАТЬ: Я сделал ошибку, и я не задал правильный вопрос.Я хочу получать ВСЕ сообщения, но только SMS с определенным текстом, которые нужно сохранить в текстовый файл?

1 Ответ

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

ПРИМЕЧАНИЕ. Я считаю, что это работает на всех телефонах, но не проверено.

Uri allMessage = Uri.parse("content://sms/inbox");
        ContentResolver cr = getContentResolver();
        Cursor c = cr.query(allMessage, new String[]{"body"}, null, null, null);

        while (c.moveToNext()) {

            if(c.getColumnName(0).equals("body")){
                String result = c.getString(0);

            }
        }

Получает тело от каждого SMS-сообщения, хранящегося на телефоне. Если вы хотите видеть тексты только за последний час:

String selection = "date>=" + (System.currentTimeMillis()-60*60*1000);

        Uri allMessage = Uri.parse("content://sms/inbox");
        ContentResolver cr = getContentResolver();
        Cursor c = cr.query(allMessage, new String[]{"body"}, null, null, null);

        while (c.moveToNext()) {

            if(c.getColumnName(0).equals("body")){
                String result = c.getString(0);

            }
        }

оттуда вы сможете искать по телам SMS то, что вам нужно, или написать запрос (как в примере с датой), чтобы найти их.

...