Вопрос такой: нужно чтоб приложение прослушивало входящие 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);
}
}
}Есть ли тот, кто готов помочь с приложением? рассмотрю любые варианты помощи.... спасибо