Comment envoyer un SMS avec Delphi XE5 dans Android
SEND_SMS
permission. Mais après avoir obtenu cette permission, rien ne se passe!
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;
4 réponses
essayez de passer la valeur vide (nil
) <à la!--2--> paramètre sendTextMessage
appel de la fonction pour utiliser la valeur par défaut de SMS center:
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;
Le deuxième paramètre sendTextMessage n'est pas le numéro" expéditeur", il identifie plutôt le fournisseur de SMS centre de service.
Vous n'avez certainement pas voulu préciser quoi que ce soit ici. Simplement passer nul et SMSManager utilisera le device default service center pour transmettre votre message.
sRecipient := StringToJString(edRecipient.Text);
sMessage := StringToJString(edMessage.Text);
sendTextMessage(sRecipient, nil, sMessage, nil, nil);
Voir aussi:
http://delphi-android.blogspot.dk/2013/10/how-to-send-sms-with-delphi-on-android.html
pour une fonction copier & coller.
j'aime avoir de telles fonctions dans une unité séparée, au lieu de les mettre dans le gestionnaire d'événements du bouton.
Vous pouvez aussi le faire avec l'objet JIntend comme ci-dessous
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;