Как прочитать входящее сообщение, используя сервис в фоновом режиме в Android? - PullRequest
11 голосов
/ 11 февраля 2011

Я разрабатываю приложение для Android, в котором я хочу прочитать входящее сообщение, не зная пользователя. Я хочу всегда запускать проверку входящего сообщения в фоновом режиме. Если новое сообщение получено, значит, я хочу прочитать содержимоесообщение и это сообщение содержит несколько слов (пароль) означает, что я хочу активировать приложение

Пожалуйста, объясните мне, как это сделать с примером кода, потому что я новичок в Android

1 Ответ

22 голосов
/ 12 февраля 2011

Посмотрите на BroadCastReceivers, которые вы должны внедрить, и зарегистрируйте Reciever для android.provider.Telephony.SMS_RECEIVED

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

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver
{
    public void onReceive(Context context, Intent intent)
    {
        Bundle myBundle = intent.getExtras();
        SmsMessage [] messages = null;
        String strMessage = "";

        if (myBundle != null)
        {
            Object [] pdus = (Object[]) myBundle.get("pdus");
            messages = new SmsMessage[pdus.length];

            for (int i = 0; i < messages.length; i++)
            {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                strMessage += "SMS From: " + messages[i].getOriginatingAddress();
                strMessage += " : ";
                strMessage += messages[i].getMessageBody();
                strMessage += "\n";
            }

            Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show();
        }
    }
}

А здесьчто вы должны добавить в свой файл AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

<receiver android:name=".SMSReceiver">
    <intent-filter> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
    </intent-filter> 
</receiver>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...