mardi 8 mars 2016

Time Service is not working.On Running it shows "Unfortunately Stopped"

Please Help ...I m new to android and I am doing my 1st project in Eclipse Juno. I have a Reminder module with Alarm service.Reminder Time and date are stored in Sqlite database with table name reminder_tb. Saving of these values are done in ReminderActivity.java and AlarmService is done creating a new java page TimeService.java and this page is called(intent) from my main page ie LoginActivity.java

At first run my app worked without any errors.Next day when I run again its show:UNFORTUNATELY STOPPED

Here is my ReminderActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reminder);
    //open sqlite and fetch id from xpence and pass to php page
    SQLiteDatabase db = openOrCreateDatabase("xpence", MODE_PRIVATE, null);
final   Cursor cur=db.rawQuery("select * from login",null); 
     //save details on click

    Save.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            AmountString=Amount.getText().toString().trim();
            DateString=Date.getText().toString().trim();
            TimeString=Time.getText().toString().trim();
            DescString=Desc.getText().toString().trim();


            if (cur.moveToFirst())
            {
                id = cur.getString(0).toString();
                doSaveRem(AmountString,DateString,TimeString,DescString,id);

            }




        }


    });
}

public void doSaveRem(final String AmountString,final String DateString,final String TimeString,final String DescString,final String id)
{

    //Toast.makeText(getApplicationContext(), "Loaded"+AmountString+DateString+TimeString+DescString+id,Toast.LENGTH_SHORT).show();

    db=openOrCreateDatabase("xpence", MODE_PRIVATE, null);

    //TABLE FOR SMS AND NOTIFY
    //Insert to SMSNOTIFY
        db.execSQL("create table if not exists reminder_tb(amount varchar,date varchar,time varchar,desc varchar,id,active_flag INTEGER DEFAULT 0)");
        db.execSQL("insert into reminder_tb(amount,date,time,desc,id) values('"+AmountString+"','"+DateString+"','"+TimeString+"','"+ DescString+"','"+id+"')");
        Cursor   c = db.rawQuery("SELECT * FROM reminder_tb", null);
        c.moveToFirst();
        if(c.getCount()>0)
         {

            Toast.makeText(getApplicationContext(),"Saved!",Toast.LENGTH_LONG).show();
            Amount.setText("");
            Date.setText("");
            Time.setText("");
            Desc.setText("");

         }
         db.close();
         finish();
}

//// - Here is TimeService.java

     public class TimerService extends Service 
                    {
                        String dateString;
                         String timeString;
                         private int year;
                         private int month;
                         private int day;
                         private int hour;
                         private int minute;
                         private String date;
                       // private Cursor c;
                        private  SQLiteDatabase db;
                         // constant
                        public long  NOTIFY_INTERVAL = 1000;
                        // run on another Thread to avoid crash
                        private Handler mHandler = new Handler();
                        // timer handling
                        private Timer mTimer = null;
                        @Override
                        public IBinder onBind(Intent intent)
                        {
                            return null;
                        }
                        @Override
                        public void onCreate() 
                        {
                        // cancel if already existed
                            if (mTimer != null) 
                            {
                                mTimer.cancel();
                            } 
                            else 
                            {
                                // recreate new
                                mTimer = new Timer();
                            }
                            // schedule task
                            mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
                           }
                    class TimeDisplayTimerTask extends TimerTask 
                        {
                           @Override
                            public void run()
                            {
                                // run on another thread
                                mHandler.post(new Runnable() 
                                {
                                   @Override
                                    public void run() 
                                    {
                                        AlarmService();

                                    }

                                });
                            }
                        }
                    private void AlarmService()
                        {
                          //for date
                             final Calendar ca = Calendar.getInstance();
                             year  = ca.get(Calendar.YEAR);
                             month = ca.get(Calendar.MONTH)+1;
                             day   = ca.get(Calendar.DAY_OF_MONTH);
                             date =year+"-"+month+"-"+day;
                             final Calendar c1 = Calendar.getInstance();
                             hour = c1.get(Calendar.HOUR_OF_DAY);
                            minute = c1.get(Calendar.MINUTE);
                              String timeSet = "";
                             if (hour > 12)
                             {
                                 hour -= 12;
                                 timeSet = "PM";
                             } else if (hour == 0)
                             {
                                 hour += 12;
                                 timeSet = "AM";
                             }
                     else if (hour == 12)
                                 timeSet = "PM";
                             else
                                 timeSet = "AM";
                      String minutes = "";
                             if (minute < 10)
                                 minutes = "0" + minute;
                             else
                                 minutes = String.valueOf(minute);
                      String TimeString = new StringBuilder().append(hour).append(':').append(minutes).append(" ").append(timeSet).toString();
                      db = openOrCreateDatabase("xpence", Context.MODE_PRIVATE, null);
                             String tableName="reminder_tb";
                             Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
                             Cursor   c = db.rawQuery("SELECT * FROM reminder_tb",null);
                             c.moveToFirst();
                            if( cursor!=null)
                             {
                                 if(cursor.getCount()>0) 
                                    {
                                      cursor.close();
                                       c = db.rawQuery("SELECT * FROM reminder_tb where date='"+date+"' and time='"+TimeString+"' and active_flag=0" , null);
                                      c.moveToFirst();
                                      if(c.getCount()>0)
                                       {
                                        Toast.makeText(getApplicationContext(), "REMINDER: " + c.getString(3) + "Amount:"+c.getString(0)+" On "+date+","+TimeString, Toast.LENGTH_LONG).show();       
                                        db.execSQL("update reminder_tb SET active_flag=1 WHERE date='"+date+"' and time='"+TimeString+"'");

                                        }
                                    c.close();              
                                 }
                                cursor.close();
                             }
                             db.close();
                         }
                    }

///- LoginActivity.java

Intent serviceIntent = new Intent(LoginActivity.this, TimerService.class); LoginActivity.this.startService(serviceIntent);

  • Here is the LogCat

    03-08 15:50:20.481: E/Trace(1799): error opening trace file: No such file or directory (2) 03-08 15:50:21.121: D/dalvikvm(1799): GC_CONCURRENT freed 44K, 4% free 2768K/2876K, paused 7ms+2ms, total 52ms 03-08 15:50:21.461: D/dalvikvm(1799): GC_FOR_ALLOC freed 8K, 3% free 2829K/2912K, paused 36ms, total 48ms 03-08 15:50:21.561: I/dalvikvm-heap(1799): Grow heap (frag case) to 7.820MB for 5242892-byte allocation 03-08 15:50:21.581: D/dalvikvm(1799): GC_FOR_ALLOC freed <1K, 2% free 7949K/8036K, paused 25ms, total 25ms 03-08 15:50:21.641: D/dalvikvm(1799): GC_CONCURRENT freed <1K, 2% free 7948K/8036K, paused 13ms+2ms, total 58ms 03-08 15:50:22.912: E/SQLiteLog(1799): (1) no such table: reminder_tb 03-08 15:50:22.931: D/AndroidRuntime(1799): Shutting down VM 03-08 15:50:22.931: W/dalvikvm(1799): threadid=1: thread exiting with uncaught exception (group=0xb2d0a908) 03-08 15:50:22.912: E/SQLiteLog(1799): (1) no such table: reminder_tb 03-08 15:50:22.931: D/AndroidRuntime(1799): Shutting down VM 03-08 15:50:22.931: W/dalvikvm(1799): threadid=1: thread exiting with uncaught exception (group=0xb2d0a908) 03-08 15:50:22.951: E/AndroidRuntime(1799): FATAL EXCEPTION: main 03-08 15:50:22.951: E/AndroidRuntime(1799): android.database.sqlite.SQLiteException: no such table: reminder_tb (code 1): , while compiling: SELECT * FROM reminder_tb 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.ANSAR.xpence.TimerService.AlarmService(TimerService.java:149) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.ANSAR.xpence.TimerService.access$1(TimerService.java:91) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.ANSAR.xpence.TimerService$TimeDisplayTimerTask$1.run(TimerService.java:81) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.os.Handler.handleCallback(Handler.java:725) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.os.Handler.dispatchMessage(Handler.java:92) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.os.Looper.loop(Looper.java:137) 03-08 15:50:22.951: E/AndroidRuntime(1799): at android.app.ActivityThread.main(ActivityThread.java:5041) 03-08 15:50:22.951: E/AndroidRuntime(1799): at java.lang.reflect.Method.invokeNative(Native Method) 03-08 15:50:22.951: E/AndroidRuntime(1799): at java.lang.reflect.Method.invoke(Method.java:511) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 03-08 15:50:22.951: E/AndroidRuntime(1799): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 03-08 15:50:22.951: E/AndroidRuntime(1799): at dalvik.system.NativeStart.main(Native Method)*

Aucun commentaire:

Enregistrer un commentaire