1

私はGCMに取り組んでいます。すべて問題なく、GCM を正常に実装し、機能しています。しかし、メッセージをデータベース テーブルに保存する必要があります。しかし、以下のデータベース操作コードを実装すると、GCM はデータベースと同様に機能しなくなりました。ログにもエラーは表示されません。

   @Override
        protected void onMessage(Context context, Intent intent) {
            String message = getString(R.string.gcm_message);
            message = (String) intent.getExtras().getCharSequence("hello");
            displayMessage(context, message);
                /* database manipulation */
                String dbName = new String("GCM");
        SQLiteDatabase db = openOrCreateDatabase(dbName, MODE_PRIVATE, null);
        String tableName = new String("newsTable");
                db.execSQL("INSERT INTO " + tableName + "(message) VALUES(" + message + ");");                       
                db.close();
                /* database manipulation ends */
            generateNotification(context, message);
        }

繰り返しますが、データベース コード スニペットを削除すると、GCM はうまく機能しました。データベースとテーブルが既に存在することを確認しました。私のデータベース操作コードは間違っていますか? はいの場合、実際の方法は何ですか?

4

1 に答える 1

2

この方法を試してください..

メッセージを作成してsqlite データベースに挿入する新しいDatabaseHelper クラスを作成します。

public class DatabaseHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "GCM";
private static final String TABLE_NAME = "newsTable";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

    db.execSQL("CREATE TABLE " + TABLE_NAME
            + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, MESSAGE STRING)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

public void insertMsg(String msg) {

    SQLiteDatabase db = getWritableDatabase();

    ContentValues cv = new ContentValues();

    cv.put("MESSAGE", msg);

    db.insert(TABLE_NAME, null, cv);

    db.close();

  }
 }

GCMサービス

    @Override
    protected void onMessage(Context context, Intent intent) {
        String message = getString(R.string.gcm_message);
        message = (String) intent.getExtras().getCharSequence("hello");
        displayMessage(context, message);

        DatabaseHelper db = new DatabaseHelper(context);
        db.insertMsg(message);
        generateNotification(context, message);
    }

簡単に見えるように、常にコードをきれいにしてください..

ハッピーコーディング:)

于 2013-02-03T18:40:04.383 に答える