繁体   English   中英

保存在数据库中的GCM消息错误

[英]GCM message error in saving in database

我正在尝试将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);

}

使用下面的代码更新

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

您输入了相同的列名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM