آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خطای در ذحیره کردن SMS های دریافتی در دیتابیس

sadra  11 سال پیش  11 سال پیش
+1 0

دوستان ممنون میشم اگر راهنمایی کنید در مورد خطای رخ داده ف در قسیمت بیست آموزش بعد از اینکه  اس ام اس دریافت میشه ، یک دیتا بیس درست کردم و میخاسم که 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)

+1 0
کد قرار بدید :) (11 سال پیش)
0 0
کسی نیست راهنمایی کنه ؟ (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
ajn91  11 سال پیش
+2 0

یکم کدتون نامرتب هست اما نکته ای که من متوجهش شدم این خط کد هست

  G.database.execSQL("INSERT INTO messaging (sms_txt,sender_number,send_dt) VALUES ('txt#" + i + "','" + senderTel + "'," + sendDt + ")");

شما میگید که 3 تا فیلد برای INSERT لازم هست اما عملا تنها واسه یک فیلد مقدار میفرستید به این صورت اصلاح کنید ببنید مشکل حل میشه یا نه.متغیر sendDt رو هم تعریف کنید

 

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