دریافت پیامکی که طور آن بیشتر از یک پیامک است
با سلام خدمت دوستان گرامی
بنده دارم روی برنامه ای کار میکنم که مربوط به کنترل پیامک ها است
وقتی پیامکی میاد و طول آن بیشتر از یکی از هست فقط مقداری که مربوط به پیامک اول هست رو میگیریه و مابقی رو بیخیال میشه
ممنون میشم راهنمایی کنید.
با تشکر
وقتی پیامک رو دریافت میکنید، یک آرایه از Object[] pdus بهتون برمیگردونه.
کافیه این آرایه رو به هم بچسبونید تا کل پیامک رو بگیرید.
من این کد رو نوشتم درسته؟
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
String sms = "";
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
StringBuffer content = new StringBuffer();
if (messages.length > 0) {
for (int i = 0; i < messages.length; i++) {
content.append(messages[i].getMessageBody());
sms += messages[i].getMessageBody().toString();
}
}
String mySmsText = content.toString();
اینکه من کد کامل رو قرار بدم کار درستی نیست، ولی چون کاملا مشخصه که شما تلاشتون رو کردین براتون نوشتمش.
StructMessage message = new StructMessage();
SmsMessage[] messages = new SmsMessage[pdus.length];
String body = null;
for (int i = 0; i < pdus.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
SmsMessage sms = messages[0];
try {
if (messages.length == 1 || sms.isReplace()) {
body = sms.getDisplayMessageBody();
} else {
StringBuilder bodyText = new StringBuilder();
for (int i = 0; i < messages.length; i++) {
bodyText.append(messages[i].getMessageBody());
}
body = bodyText.toString();
}
} catch (Exception e) {
}
موفق باشید
با سلام
من با کد زیر تست کردم و جواب گرفتم فقط دقت کن رو امولاتور نه رو گوشی تست کن
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class SmsReciver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String SmSBody = "";
if (bundle != null)
{
// Retrieve the SMS Messages received
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
//Log.i("LLLOOOOOGGGG pdus", "" + pdus.length);
// For every SMS message received
for (int i = 0; i < msgs.length; i++)
{
// Convert Object array
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
// Fetch the text message
SmSBody += msgs[i].getMessageBody().toString();
}
}
}
}
حالا اطلاعات تو SmSBody هست و میتونی از اون استفاده کنی
موفق باشی
سلام آقا
یه زحمتی می کشید اون کدی رو که آقای Hajhosseini نوشتن رو یه توضیح برام بدین خط به خط ؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .