Вы можете отправить Сообщ программным
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, sms, null, null);
Toast.makeText(getApplicationContext(), "SMS Sent!",Toast.LENGTH_LONG).show();
Для Sms приемника
общественного класса SmsReceiver расширяет BroadcastReceiver {
public static final String SMS_EXTRA_NAME = "pdus";
public static final String SMS_URI = "content://sms";
public void onReceive(Context context, Intent intent)
{
// Get SMS map from Intent
Bundle extras = intent.getExtras();
if (extras != null)
{
// Get received SMS array
Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);
for (int i = 0; i < smsExtra.length; ++i)
{
SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
if(IsBlackListNumber(context,sms)){
this.abortBroadcast();
// Toast.makeText(context, "BlackList", Toast.LENGTH_SHORT).show();
}
else{
//Toast.makeText(context, "No BlackList", Toast.LENGTH_SHORT).show();
}
}
}
// WARNING!!!
// If you uncomment next line then received SMS will not be put to incoming.
// Be careful!
// this.abortBroadcast();
}
private boolean IsBlackListNumber(Context context, SmsMessage sms){
boolean isExist = false;
ContactInfoDataSource datasource = new ContactInfoDataSource(context);
datasource.read();
if(datasource.IsBlackListNumber(sms.getOriginatingAddress())){
SmsInfoEnt smsInfoEnt = new SmsInfoEnt();
smsInfoEnt.setMessage(sms.getMessageBody());
smsInfoEnt.setName(datasource.GetName(sms.getOriginatingAddress()));
smsInfoEnt.setPhoneNo(sms.getOriginatingAddress());
SmsInfoDataSource Smsdatasource = new SmsInfoDataSource(context);
Smsdatasource.open();
Smsdatasource.AddBlockSMS(smsInfoEnt);
Smsdatasource.close();
isExist = true;
}
datasource.close();
return isExist;
}
}
почему вы должны сделать это с помощью приложения смс? – cYrixmorten
Потому что мне нужно разрешить пользователю выбирать контакт. Я бы открыл приложение sms с уже написанным meesage, но без приемника. – cheloperel
Я вижу .. ну, а сложная часть - получить статус смс в этом случае. Если вы сделаете свою собственную операцию, которая позволит выбрать контакт, можно было бы получить обратные вызовы SENT и DELIVERED плюс, если произошла ошибка. Но если вы вызываете другое текстовое приложение, нет никаких гарантий относительно того, какие трансляции послушать, чтобы получить эту информацию. – cYrixmorten