puedo - Cómo enviar SMS con Delphi XE5 en Android
mensajes de texto (4)
¿Alguien sabe cómo hacer que esto funcione? Lo más cercano que obtuve fue el código de abajo, pero no tuve éxito. Al principio, le da alguna esperanza cuando le dice que necesita el permiso SEND_SMS
. ¡Pero después de configurar este permiso, no pasa nada!
uses
Androidapi.JNI.JavaTypes;
procedure TForm1.Button1Click(Sender: TObject);
var
smsManager: JSmsManager;
smsTo, smsFrom: JString;
begin
smsManager:= TJSmsManager.JavaClass.getDefault;
smsTo:= StringToJString(''552199999999''); //replace with the right destination number
smsFrom:= StringToJString(''552499999999''); //replace with the right originator number
smsManager.sendTextMessage(smsTo, smsFrom, StringToJString(Edit1.Text), nil, nil);
end;
El segundo parámetro para sendTextMessage no es el número "remitente", sino que identifica al centro de servicio del proveedor de SMS.
Es casi seguro que no quisiste especificar nada aquí. Simplemente pase nulo y SMSManager usará el centro de servicio predeterminado del dispositivo para entregar su mensaje.
sRecipient := StringToJString(edRecipient.Text);
sMessage := StringToJString(edMessage.Text);
sendTextMessage(sRecipient, nil, sMessage, nil, nil);
Intente pasar un valor vacío ( nil
) al parámetro scAddress
de la llamada a la función sendTextMessage
para usar el centro de SMS predeterminado actual:
uses
Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony;
procedure TForm1.Button1Click(Sender: TObject);
var
smsTo: JString;
smsManager: JSmsManager;
begin
smsManager := TJSmsManager.JavaClass.getDefault;
smsTo := StringToJString(''091...'');
smsManager.sendTextMessage(smsTo, nil, StringToJString(''Test SMS''), nil, nil);
end;
También puedes hacerlo con objeto JIntend como abajo
procedure CreateSms(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;
Ver también:
http://delphi-android.blogspot.dk/2013/10/how-to-send-sms-with-delphi-on-android.html
para una función de copiar y pegar.
Me gusta tener esas funciones en una unidad separada, en lugar de ponerlas en el controlador de eventos del Botón.