我正在研究 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/