Запустить заявку на получение смс с определенного номера - PullRequest
2 голосов
/ 24 марта 2010

Я хочу запустить приложение при получении смс с определенного номера. я пытаюсь с помощью метода onMessageWaitingIndicatorChanged (boolean mwi) {}, но я пытаюсь. Итак, кто-нибудь там, чтобы помочь мне в деталях? Спасибо

Ответы [ 2 ]

5 голосов
/ 24 марта 2010

Вам необходимо зарегистрировать приемник вещания на android.provider.Telephony.SMS_RECEIVED. После этого получатель может проверить номер SMS-сообщения и начать свою деятельность соответствующим образом.

Итак, вам нужно:

  • Добавьте uses-permission для android.permission.RECEIVE_SMS в манифест
  • Объявите широковещательный приемник в элементе <application/> в самом простом:

    <receiver android:name=".YourReceiverName"> 
        <intent-filter> 
            <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver>
    
  • Создать класс получателя, расширяющий IntentReceiver.

  • В onReceiveIntent вы можете получить соответствующие сообщения, позвонив по номеру Telephony.Sms.Intents.getMessagesFromIntent() и передав введенное вами намерение.
  • Если номер соответствует желаемому, вы можете начать занятие, позвонив по номеру startActivity
0 голосов
/ 15 мая 2014

вот мой onReceive() метод, он работает:)

public void onReceive( Context context, Intent intent ) {
        // get incoming message
        Bundle extras = intent.getExtras();

        String messages = "";

        // if message available, go on
        if ( extras != null ) {
            // get the array of the message
            Object[] smsExtra = (Object[]) extras.get( "pdus" );

            // loop through the number of available messages
            for ( int i = 0; i < smsExtra.length; ++i ) {
                // create smsmessage from raw pdu
                SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);

                // retrieve contents of message
                String body = sms.getMessageBody().toString();
                String address = sms.getOriginatingAddress();

                // only accept messages from specified number             
                if(address.equals(0000)){
                             // store the message to database
                    storeToDatabase( contentResolver, sms );
                        // stop message from getting to default app
                    this.abortBroadcast(); 
                }
            }

        }

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