Android: получать смс с определенного номера? - PullRequest
2 голосов
/ 08 июля 2011

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

Ответы [ 2 ]

4 голосов
/ 08 июля 2011

Вот фрагмент кода -

public class SMSApp extends IntentReceiver {

static final String ACTION =
        "android.provider.Telephony.SMS_RECEIVED";

public void onReceiveIntent(Context context, Intent intent) {
    if (intent.getAction().equals(ACTION)) {
        StringBuilder buf = new StringBuilder();
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
            for (int i = 0; i < messages.length; i++) {
                SmsMessage message = messages[i];
                String phNum = message.getDisplayOriginatingAddress();
                if ("xxx-xxx-xxxx".equals(phNum))
                {// Do your thing }
            }
        }

    }
}

Вам, конечно, нужно будет указать получателя и разрешение в манифесте, аналогичном -

<uses-permission id="android.permission.RECEIVE_SMS" />
<application>
    <receiver class="SMSApp">
        <intent-filter>
            <action android:value="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
</application>
1 голос
/ 15 мая 2014

вышеуказанный код правильный.чтобы добавить к нему, не забудьте добавить this.abortBroadcast (), чтобы ваше приложение сообщений по умолчанию не получало сообщение с этого конкретного номера. Например:

    for (int i = 0; i &lt; messages.length; i++) {
            SmsMessage message = messages[i];
            String phNum = message.getOriginatingAddress();
            if (phNum.equals("000000")) {
               this.abortBroadcast();
               // do something
            } else {
               // do something else
            }

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