ممنونم از لطفتون دوست عزیز. اما من شماره ی فرستنده هم برام مهمه.ممنون میشم بازم راهنمایم کنین
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
سوال در مورد پروژه دریافت SMS
مدیریت گفتگو
آخرین تغییر: 9 سال پیش
باعرض سلام خدمت دوستان
من نرم افزاری دارم که میخوام پیامک وقتی از فلان شماره میاد، توی دیتابیس ذخیره بشه. حالا همه چیزش حله فقط نمیدونم چرا حدودا 60وخورده ای کاراکتر بیشتر ذخیره میکنه تو دیتابیس.نوع متغیر رو از نوع TEXT و VARCHAR انتخاب کردم بازهم فایده نداشت
قطعه کد رو هم گذاشتم
ممنونم راهنمایی کنین
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus[0]);
String senderTel = sms.getOriginatingAddress();
String messageBody = sms.getMessageBody();
G.database.execSQL("INSERT INTO melliSMS (sms) VALUES ('" + messageBody + "')");
Toast.makeText(G.context, "smsReceived", Toast.LENGTH_SHORT).show();
}
else
{
// Toast.makeText(G.context, "false", Toast.LENGTH_SHORT).show();
}
}
}
}
پاسخها 3
چون شما فقط محتوای یک اس ام اس رو میخونید از این کد استفاده کنید
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];
// 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 رو میتونید ذخیره کنید
نظرات
پیدا کردن شماره فرستنده هم کاری نداره
میتونید از این کد که کامل تر هست استفاده کنید
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
import java.util.ArrayList;
public class SmsBroadcast extends BroadcastReceiver {
//متن پیام
private String content = "";
//شماره فرستنده
private String sender = "";
@Override
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
sender = currentMessage.getDisplayOriginatingAddress();
content += currentMessage.getDisplayMessageBody();
}
}
Log.i("TAG", "sender:" + sender + "content: " + content);
} catch (Exception e) {
Log.e("TAG", "Exception smsReceiver" + e);
}
}
}
برای تشکر هم از دکمه لایک استفاده کنید :)
نظرات
بازم تشکر میکنم دوست عزیز
فقط من زمان رو هم نیاز دارم.امکانش هست زمان رو هم برا من قرار بدین؟
البته قرار دادن کد های آمده کار درستی نیست و شما باید خودتون هم سرچ کنید و به نتیجه برسید
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = df.format(c.getTime());
میتونید از formattedDate استفاده کنید
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات