بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

دریافت پیامکی که طور آن بیشتر از یک پیامک است

مدیریت گفتگو
mahdiFar77 11 سال پیش
آخرین تغییر: 11 سال پیش

با سلام خدمت دوستان گرامی

بنده دارم روی برنامه ای کار میکنم که مربوط به کنترل پیامک ها است

وقتی پیامکی میاد و طول آن بیشتر از یکی از هست فقط مقداری که مربوط به پیامک اول هست رو میگیریه و مابقی رو بیخیال میشه

ممنون میشم راهنمایی کنید.

با تشکر

نظرات

b.fat 11 سال پیش
عنوان با لحجه فامیل دور نوشته شده

پاسخ‌ها 5

Hajhosseini 11 سال پیش

وقتی پیامک رو دریافت میکنید، یک آرایه از Object[] pdus بهتون برمیگردونه.
کافیه این آرایه رو به هم بچسبونید تا کل پیامک رو بگیرید.

نظرات

mahdiFar77 11 سال پیش
همین کارو کردم ولی وقتی بیشتر از یک پیامک میشه کلا نوشته رو عوض میکنه میشه کدش رو برام بزارید؟
mahdiFar77 11 سال پیش

من این کد رو نوشتم درسته؟

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();

نظرات

Hajhosseini 11 سال پیش

اینکه من کد کامل رو قرار بدم کار درستی نیست، ولی چون کاملا مشخصه که شما تلاشتون رو کردین براتون نوشتمش.

 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) {

        }

موفق باشید

نظرات

mahdiFar77 11 سال پیش
تشکر-پس body میشه کل متن پیامک .درسته؟
reza1234 11 سال پیش

با سلام

من با کد زیر تست کردم و جواب گرفتم فقط دقت کن رو امولاتور نه رو گوشی تست کن

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 هست و میتونی از اون استفاده کنی

موفق باشی

 

نظرات

AliBakh 11 سال پیش

سلام آقا

یه زحمتی می کشید اون کدی رو که آقای Hajhosseini نوشتن رو یه توضیح برام بدین خط به خط ؟

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .