خطای در ذحیره کردن SMS های دریافتی در دیتابیس
دوستان ممنون میشم اگر راهنمایی کنید در مورد خطای رخ داده ف در قسیمت بیست آموزش بعد از اینکه اس ام اس دریافت میشه ، یک دیتا بیس درست کردم و میخاسم که SMS دریافتی رو توش ذخیره کنم ، کاری که من انجام دادم کد های مربوط به ایجاد DATABASE رو در کلاس G نوشتم و ذخیره کردن SMS های دریافتی رو با استتفاده از تابه G.DATABASE در اکتویتی SMS RECIVER ست کردم اما تا جای که من از اروری که به وجود اومد فهمیدم در خط 26 کلاس G که مربوط به ONCREATE ارور رخ داده و این دستور اجرا نمیشه ، حالا نمیدونم باس چیکار کرد که این ارور رفع بشه ، ممنون از راهنمایی تون
publicclassGextendsApplication{
publicstaticContext context;
publicstaticSQLiteDatabasedatabase;
publicstaticfinalString DIR_SDCARD =Environment.getExternalStorageDirectory().getAbsolutePath();
publicstaticfinalString DIR_DATABASE = DIR_SDCARD +"/database-test/";
@Override
publicvoidonCreate(){
super.onCreate();
context=this.getApplicationContext();
newFile(DIR_DATABASE).mkdirs();
database=SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE +"/database.sqlite",null);
database.execSQL("CREATE TABLE IF NOT EXISTS messaging ("+
"message_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ,"+
" sms_txt TEXT, "+
"sender_number INTEGER,"+
" send_dt DATETIME"+
")");
sendTestSms();
}
privatevoidsendTestSms(){
HelperSms.sendSms("5556","Hello");
}
SMSRECEIVER.JAVA
publicvoidonReceive(Contextcontext,Intentintent){
Object[] pdus =(Object[])intent.getExtras().get("pdus");
SmsMessage sms =SmsMessage.createFromPdu((byte[]) pdus[0]);
String senderTel = sms.getOriginatingAddress();
String messageBody = sms.getMessageBody();
for(int i =0; i <50; i++){
G.database.execSQL(" INSERT INTO messaging ( sms_txt,sender_number,send_dt) VALUES ('txt#"+ i +"')");
Toast.makeText(G.context, senderTel +": "+ messageBody,Toast.LENGTH_SHORT).show();
Intent detailIntent =newIntent(G.context,SmsDetailActivity.class);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
detailIntent.putExtra("SENDER", senderTel);
detailIntent.putExtra("MESSAGE", messageBody);
G.context.startActivity(detailIntent);
}
}
}
اینم فایل ارور
11-30 00:21:27.894: E/AndroidRuntime(613): at com.uncocoder.course.sms_test.G.onCreate(G.java:26)
یکم کدتون نامرتب هست اما نکته ای که من متوجهش شدم این خط کد هست
G.database.execSQL("INSERT INTO messaging (sms_txt,sender_number,send_dt) VALUES ('txt#" + i + "','" + senderTel + "'," + sendDt + ")");
شما میگید که 3 تا فیلد برای INSERT لازم هست اما عملا تنها واسه یک فیلد مقدار میفرستید به این صورت اصلاح کنید ببنید مشکل حل میشه یا نه.متغیر sendDt رو هم تعریف کنید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .