
The Delphi Android programming blog has posted two threads, with code snippets, regarding SMS messaging with Delphi and Android. The first is How to send SMS with Delphi on Android The second is How to fetch SMS messages from the Android inbox using Delphi.
Send an SMS
1 2 3 4 5 6 |
uses FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony; |
1 2 3 4 5 6 7 8 9 |
procedure SendSMS (target,messagestr:string); var smsManager: JSmsManager; smsTo: JString; begin smsManager:= TJSmsManager.JavaClass.getDefault; smsTo:= StringToJString(target); smsManager.sendTextMessage(smsTo, nil, StringToJString(messagestr), nil, nil); end; |
Fetch SMS Messages
1 2 3 4 5 6 7 |
uses SysUtils, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
function FetchSms:string; var cursor: JCursor; uri: Jnet_Uri; address,person,msgdatesent,protocol,msgread,msgstatus,msgtype, msgreplypathpresent,subject,body, servicecenter,locked:string; msgunixtimestampms:int64; addressidx,personidx,msgdateidx,msgdatesentidx,protocolidx,msgreadidx, msgstatusidx,msgtypeidx,msgreplypathpresentidx,subjectidx,bodyidx, servicecenteridx,lockedidx:integer; begin uri:=StrToJURI('content://sms/inbox'); cursor := SharedActivity.getContentResolver.query(uri, nil, nil,nil,nil); addressidx:=cursor.getColumnIndex(StringToJstring('address')); personidx:=cursor.getColumnIndex(StringToJstring('person')); msgdateidx:=cursor.getColumnIndex(StringToJstring('date')); msgdatesentidx:=cursor.getColumnIndex(StringToJstring('date_sent')); protocolidx:=cursor.getColumnIndex(StringToJstring('protocol')); msgreadidx:=cursor.getColumnIndex(StringToJstring('read')); msgstatusidx:=cursor.getColumnIndex(StringToJstring('status')); msgtypeidx:=cursor.getColumnIndex(StringToJstring('type')); msgreplypathpresentidx:=cursor.getColumnIndex(StringToJstring('reply_path_present')); subjectidx:=cursor.getColumnIndex(StringToJstring('subject')); bodyidx:=cursor.getColumnIndex(StringToJstring('body')); servicecenteridx:=cursor.getColumnIndex(StringToJstring('service_center')); lockedidx:=cursor.getColumnIndex(StringToJstring('locked')); while (cursor.moveToNext) do begin address:=JStringToString(cursor.getString(addressidx)); person:=JStringToString(cursor.getString(personidx)); msgunixtimestampms:=cursor.getLong(msgdateidx); msgdatesent:=JStringToString(cursor.getString(msgdatesentidx)); protocol:=JStringToString(cursor.getString(protocolidx)); msgread:=JStringToString(cursor.getString(msgreadidx)); msgstatus:=JStringToString(cursor.getString(msgstatusidx)); msgtype:=JStringToString(cursor.getString(msgtypeidx)); msgreplypathpresent:=JStringToString(cursor.getString(msgreplypathpresentidx)); subject:=JStringToString(cursor.getString(subjectidx)); body:=JStringToString(cursor.getString(bodyidx)); servicecenter:=JStringToString(cursor.getString(servicecenteridx)); locked:=JStringToString(cursor.getString(lockedidx)); Result:=IntToStr(trunc(msgunixtimestampms/1000))+' '+address+' '+body; end; end; |
Visit the Delphi Android programming blog and learn How to send SMS messages and fetch SMS messages using Delphi on Android.
Mototrola Moto G
Kitkat OS
Not work Send SMS code
Do you have the Android manifest SMS permissions set?
How do I delete a sms after I read it! HEEELLLPPPP
Sending more than 50 sms with this code. More on how we send sms.
??????
Who is the SMS provider? How much does it cost to send SMS messages?
The user’s device. However, much it costs to send SMS messages from the user’s device.
i have a problem in the fetch sms, this only return the first sms in my inbox, i have a Delphi 10.2.3 what can i do to solve it?
merci pour ces codes, malheureusement ça envoi seulement le message court! comment envoyer le message long?