android - 如何将 GCM 推送通知消息存储到 sqlite 数据库中?

标签 android sqlite google-cloud-messaging

我正在研究 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);
        }

同样,当我删除数据库代码 fragment 时,GCM 运行良好。 我确保数据库和表已经存在。我的数据库操作代码错了吗?如果是,实际的做法是什么?

最佳答案

试试这个方法..

创建新的 DatabaseHelper 类,它将创建消息并将其插入到 sqlite 数据库

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);
    }

总是让代码干净,这样看起来很简单..

快乐编码:)

关于android - 如何将 GCM 推送通知消息存储到 sqlite 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675539/

相关文章:

javascript - 在 ChromeCast 上显示静态网页

python - 完整性错误 : datatype mismatch in Python using praw

android - 何时会再次执行 oneOffTaks 结果 GcmNetworkManager.RESULT_RESCHEDULE

android - 我可以在 android studio 中使用已弃用的方法和类吗

android - 如何在 Android 编程中从相机应用程序捕获图像?

android - SQLite 查询 : between

android - 我应该生成特定于应用程序还是特定于用户的 android GCM 注册 ID?

android - 使用 GCM 将推送通知从一台 Android 设备发送到另一台

android - GoogleAnalytics.getInstance(this) 没有响应

sql - 帮助优化 SQL 查询