دریافت sms های چند صفحه ای و یکپارچه کردن(multipart sms)
تو برنامه نویسی b4a با تابع smsinterceptor پیام رو دریافت میکنیم.ازین بابت مشکلی نیست منتها مشکل اینه که وقتی مثلا یه پیامک سه صفحه ای میاد پیام هارو بصورت سه صفحه جداگانه ذخیره میکنه.چون در لجظه فقط یه صفحه رو دریافت میکنه
تو سایت مرجع خود ارل یه تابع گذاشته که تشخیص میده این پیامک سه صفحه ایه و همشو تو یه رشته ذخیره میکنه ولی من نتونستم ازش استفاده کنم.تقاضا میکنم راهنماییم کنید
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ |
Sub ParseSmsIntent (In As Intent) As List Dim messages As List messages.Initialize If In.HasExtra("pdus") = False Then Return messages Dim pdus() As Object Dim r As Reflector pdus = In.GetExtra("pdus") Dim messagesMap As Map messagesMap.Initialize If pdus.Length > ۰ Then For i = ۰ To pdus.Length - ۱ Dim msg As Message r.Target = r.RunStaticMethod("android.telephony.SmsMessage", "createFromPdu", _ Array As Object(pdus(i)), Array As String("[B")) msg.Body = r.RunMethod("getMessageBody") msg.Address = r.RunMethod("getOriginatingAddress") If messagesMap.ContainsKey(msg.Address) Then Dim existing As Message existing = messagesMap.Get(msg.Address) existing.Body = existing.Body & msg.Body Else messagesMap.Put(msg.Address, msg) messages.Add(msg) End If Next End If Return messages End Sub |
پاسخ ها ( 2 )
سلام
این سورس ارسال و دریافت SMS را دانلود کنید، انشاءالله که به نتیجه می رسید، برای دانلود کلیک کنید.
موفق باشید.
تشکر میکنم بابت زحمتتون.اما باگ های بسیار زیادی داره.
به پاس پاسخی که دادید.بنده این تابعی که اماده کردمو تو سایتتون قرار میدم که قطعا تو هیچکدوم از سایتهای ایرانی بلکه سایت مرجع هم(تابع صحیحش)وجود نداره.زحمت بسیار زیادی برای این مساله کشیده شده.تقدیم به سایت بپرسم:
Sub ParseSmsIntent (In As Intent) As List
Dim messages As List
messages.Initialize
If In.HasExtra(“pdus”) = False Then Return messages
Dim pdus() As Object
Dim r As Reflector
pdus = In.GetExtra(“pdus”)
Dim messagesMap As Map
messagesMap.Initialize
matn=””
If pdus.Length > 0 Then
For i = 0 To pdus.Length – 1
r.Target = r.RunStaticMethod(“android.telephony.SmsMessage”, “createFromPdu”, _
Array As Object(pdus(i)), Array As String(“[B”))
msg.Body = r.RunMethod(“getMessageBody”)
msg.Address = r.RunMethod(“getOriginatingAddress”)
If matn=”” Then
matn=msg.Body
Else
matn=matn&msg.Body
End If
Next
End If
Return messages
End Sub