Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как отправить SMS c определенной симкарты?


Rusland

Вопрос

Рекомендуемые сообщения

  • 0
  • Модераторы

на сколько помню, никак на android ниже 5.0

т.к. на уровне api нет/не было поддержки двух и более сим карт. и каждый производитель городит свой способ.

Ссылка на комментарий
  • 0
  • Модераторы
{$IFDEF ANDROID}
procedure SendSms(const Number, Msg: string);
var
  Intent: JIntent;
  Uri: Jnet_Uri;
begin
  Uri := TJnet_Uri.JavaClass.parse(StringToJString(Format('smsto:%s', [Number])));
  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);
  Intent.putExtra(StringToJString('sms_body'), StringToJString(Msg));
  sharedActivity.startActivity(Intent);
end;
{$ENDIF}

отправляется всегда с выбранной(активной) сим карты. а на счёт апи не в курсе

Ссылка на комментарий
  • 0

ZuBy, спасибо. Это как раз метод отправки через стандартное приложение.

 

Вот нашел метод отправки напрямую из программы:

uses   Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,  Androidapi.Helpers;
...
procedure TFrmMain.BtnSendSmsClick(Sender: TObject);
var
  SmsTo: JString;
  SmsManager: JSmsManager;
begin
  SmsManager := TJSmsManager.JavaClass.getDefault;
  SmsTo := StringToJString('+79*********');
  SmsManager.sendTextMessage(smsTo, nil, StringToJString('Test SMS'), nil, nil);
end;

отправляется всегда с выбранной(активной) сим карты

У меня например нет активной симкарты, а система должна предлагать выбор... но отправка делается с 1ой sim.

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

ZuBy, спасибо. Это как раз метод отправки через стандартное приложение.

 

Вот нашел метод отправки напрямую из программы:

uses   Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,  Androidapi.Helpers;
...
procedure TFrmMain.BtnSendSmsClick(Sender: TObject);
var
  SmsTo: JString;
  SmsManager: JSmsManager;
begin
  SmsManager := TJSmsManager.JavaClass.getDefault;
  SmsTo := StringToJString('+79*********');
  SmsManager.sendTextMessage(smsTo, nil, StringToJString('Test SMS'), nil, nil);
end;

отправляется всегда с выбранной(активной) сим карты

У меня например нет активной симкарты, а система должна предлагать выбор... но отправка делается с 1ой sim.

Доброе суток. Я попробовал ваш код, но при отправке вылетает ошибка "java.lang.securityexception: sending sms message:uid 10250 does not have android.permission.send_sms"

Ссылка на комментарий
  • 0

 

ZuBy, спасибо. Это как раз метод отправки через стандартное приложение.

 

Вот нашел метод отправки напрямую из программы:

uses   Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,  Androidapi.Helpers;
...
procedure TFrmMain.BtnSendSmsClick(Sender: TObject);
var
  SmsTo: JString;
  SmsManager: JSmsManager;
begin
  SmsManager := TJSmsManager.JavaClass.getDefault;
  SmsTo := StringToJString('+79*********');
  SmsManager.sendTextMessage(smsTo, nil, StringToJString('Test SMS'), nil, nil);
end;

отправляется всегда с выбранной(активной) сим карты

У меня например нет активной симкарты, а система должна предлагать выбор... но отправка делается с 1ой sim.

Доброе суток. Я попробовал ваш код, но при отправке вылетает ошибка "java.lang.securityexception: sending sms message:uid 10250 does not have android.permission.send_sms"

 

Разобрался, надо добавить  пермишин) Всем большое спасибо 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...