Прослушивание смс с определённым ромером

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
dda
Сообщения: 1
Зарегистрирован: 08 май 2015, 17:53

Прослушивание смс с определённым ромером

Сообщение dda » 08 май 2015, 18:04

Всем привет! Ребята, спасайте... помогите пожалуйста... горю... скоро сдавать, а не получается написать.

Вопрос такой: нужно чтоб приложение прослушивало входящие SMS с определенного(заданного) номера и получало его текст

Вот что написал:
Main class

Код: Выделить всё

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class Main extends ActionBarActivity {
 
    Button sendSMS;
    EditText msgText;
    EditText numText;
    IntentFilter intentFilter;
    Button historyBtn;
    Button helpBtn;
 
 
    private BroadcastReceiver intentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            TextView intTxt = (TextView) findViewById(R.id.textMsg);
 
            intTxt.setText(intent.getExtras().getString("sms"));
 
        }
    };
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        intentFilter = new IntentFilter();
        intentFilter.addAction("SMS_RECEIVED_ACTION");
// id команды для кнопок и текста
           historyBtn = (Button) findViewById(R.id.historyBtn);
            historyBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intentopenhistry = new Intent(Main.this, Log.class);
                    startActivity(intentopenhistry);
                }
            });
           sendSMS = (Button) findViewById(R.id.sendBtn);
           msgText = (EditText) findViewById(R.id.message);
           numText = (EditText) findViewById(R.id.numberTxt);
           sendSMS.setOnClickListener(new View.OnClickListener()
           {
               public void onClick(View v){
                   String myMsg = msgText.getText().toString(); //string values
                   String theNumber = numText.getText().toString(); //string values
 
                   sendMsg(theNumber,myMsg);
               }
           });
    }
    protected void sendMsg(String theNumber, String myMsg){
 
           String SENT = "Message sent";
           String DELIVERED = "Message Delivered";
 
        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT),0); //обработка доставки //подтвержедение отправки
        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED),0);//подтверждение доставки
t
 
        registerReceiver(new BroadcastReceiver() {
            public void onReceive(Context arg0, Intent arg1) {
                //context - ситуация  и intent - содержание
                switch (getResultCode()) {
                    case Activity.RESULT_OK: 
                        Toast.makeText(Main.this, "SMS sent", Toast.LENGTH_LONG).show();
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
                        Toast.makeText(getBaseContext(), "Generic Failure", Toast.LENGTH_LONG).show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE: 
                        Toast.makeText(getBaseContext(), "No Service", Toast.LENGTH_LONG).show();
                        break;
                }
            }
        }, new IntentFilter(SENT));
 
        registerReceiver(new BroadcastReceiver()
        {
          public void onReceive(Context arg0, Intent arg1)
          {
            switch (getResultCode())
 
                {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_LONG).show();
                    break;
                    case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_LONG).show();
                    break;
                 }
            }
        }, new IntentFilter(DELIVERED));
 
 
 
 
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(theNumber, null, myMsg, sentPI, deliveredPI);
 
      }
 
    protected  void onResume (){
 
        registerReceiver(intentReceiver, intentFilter);
        super.onResume();
    }
 
    protected void onPause(){
 
        unregisterReceiver(intentReceiver);
        super.onPause();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
}
Класс приёма смс

Код: Выделить всё

 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Telephony;
import android.telephony.SmsMessage;
import android.widget.Toast;
 
import java.util.Objects;
 
public class SMSReceiver extends BroadcastReceiver{
 
 
    public void onReceive(Context context, Intent intent) {
 
        Bundle bundle = intent.getExtras();
        SmsMessage[] messages=null;
        String str = "";
        if(bundle != null)
        {
            Object[] pdus = (Object[]) bundle.get("pdus");
            messages = new SmsMessage[pdus.length];
            for(int i=0; i<messages.length; i++)
            {
                messages[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
                str += "Message from " + messages[i].getOriginatingAddress();
                str += ": ";
                str += messages[i].getMessageBody().toString();
                str += "\n";
            }
 
            Toast.makeText(context, str, Toast.LENGTH_LONG).show();
 
            Intent broadcastIntent = new Intent();
            broadcastIntent.setAction("SMS_RECEIVED_ACTION");
            broadcastIntent.putExtra("sms", str);
            context.sendBroadcast(broadcastIntent);
        }
 
    }
}
Кск сделать так чтобы принимало только с определённого номера

Есть ли тот, кто готов помочь с приложением? рассмотрю любые варианты помощи.... спасибо


Ответить