2014-02-20 2 views
0

Im пытается сохранить gcm-сообщение в базе данных, но каждый раз, когда я отправляю сообщение, приложение закрывается.Ошибка сообщения GCM при сохранении в базе данных

Вот мой метод GCMIntentService OnMessage:

protected void onMessage(Context context, Intent intent) { 

      Log.i(TAG, "Received message"); 


    String message = intent.getExtras().getString("Memo"); 

     displayMessage(context, message); 
     MemoDBAdapterHandler db = new MemoDBAdapterHandler(context); 
     db.saveMessage(message); 
      generateNotification(context, message); 
    } 

Вот MemoDBAdapterHandler

общественного класса MemoDBAdapterHandler {

public static final String KEY_BODY = "Body"; 
public static final String KEY_ROWID ="_id1"; 

private static final String TAG = "MemoDBAdapterHandler"; 
private DatabaseHelper mDbHelper; 
private SQLiteDatabase mDb; 



/** CreateMemoDatabase **/ 
private static final String DATABASE_CREATE = 
     "create table memosTable1 (KEY_BODY integer primary key autoincrement, " 
     + "Body string not null);"; 





private static final int DATABASE_VERSION = 2; 
private static final String DATABASE_NAME = "GCM2"; 
private static final String DATABASE_TABLE = "memosTable1"; 


private final Context mCtx; 

private static class DatabaseHelper extends SQLiteOpenHelper { 

    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     db.execSQL(DATABASE_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS memosTable"); 
     onCreate(db); 
    } 
} 


public MemoDBAdapterHandler(Context ctx) 
{ 
    this.mCtx = ctx; 

} 
public MemoDBAdapterHandler open() throws SQLException { 
    mDbHelper = new DatabaseHelper(mCtx); 
    mDb = mDbHelper.getWritableDatabase(); 
    return this; 
} 

public void close() { 
    mDbHelper.close(); 
} 




public long saveMessage(String msg) 
{ 

     //SQLiteDatabase db = getWritableDatabase(); 

     ContentValues cv = new ContentValues(); 

     cv.put(KEY_BODY, msg); 

     //mDb.close(); 
     return mDb.insert(DATABASE_TABLE, null, cv); 

}

ответ

0

Обновите свой код ниже

private static final String DATABASE_CREATE = 
     "create table memosTable1 (KEY_ROWID integer primary key autoincrement, " 
     + "Body string not null);"; 

Вы указали одинаковое название столбца.

+0

Я изменил его, но приложение все еще закрывается. – user3261166

+0

вызовите saveMessage в блок catch catch и проверьте, какая ошибка его дает. –

+0

Также удалите приложение с устройства, затем запустите новый файл apk или обновите версию db –

Смежные вопросы