私はhdがC2DM機能を持つプロジェクトを開発しました。サーバーで利用可能なデータがある場合はいつでも。サーバーは、このアプリケーションを持っているすべてのデバイスにデータをプッシュします(私の場合は小さなメッセージです)。Sqliteデータベースは一度だけ作成する必要があります
は今、私の質問は、メッセージが出番データベースとテーブルを作成することでしょうたびに、ここ は私のコードではないされ、
public class MessageHelper extends Activity
{
public String str;
public int sts;
public Date timeStamp;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if (extras != null) {
this.str = extras.getString("msgg");
Log.d("C2DM", this.str);
}
// Create a ref of SQLite
SQLiteDatabase db;
//use tat ref to open or create a table
db = openOrCreateDatabase("/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
try
{
//initialsiging a query with all the table fields
final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Message4("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "msg TEXT not null,"
+ "msg_time INTEGER not null,"
+ "msg_status INTEGER not null);";
//execute the above query
db.execSQL(CREATE_TABLE_CONTAIN);
timeStamp = new Date();
String sql =
"INSERT or replace INTO tbl_Message4 (msg,msg_time,msg_status) VALUES('"+this.str+"' ,'"+this.timeStamp+"' , 0)" ;
db.execSQL(sql);
}
}
また、私はBroadcastreceiverを拡張MessageReceiverというクラスを持っている。eveytimeメッセージが来ますクラスは、これにより、次にMessageReceiverためのコードはここにMessageHelper.class をロードする実行されます
public class C2DMMessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.w("C2DM", "Message Receiver called");
if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
Log.w("C2DM", "Received message");
final String payload = intent.getStringExtra("payload");
Log.d("C2DM", "dmControl: payload = " + payload);
// TODO Send this to my application server to get the real data
// Lets make something visible to show that we received the message
createNotification(context, payload);
}
}
public void createNotification(Context context, String payload) {
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher,
"Message received", System.currentTimeMillis());
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;
//Intent intent = new Intent(context, MessageReceivedActivity.class);
//intent.putExtra("payload", payload);
Intent intent = new Intent(context, MessageHelper.class);
intent.putExtra("msgg", payload);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
//PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
//notification.setLatestEventInfo(context, "Message", "New message received", pendingIntent);
//notificationManager.notify(0, notification);
}
}
何私はアプリがあるときに、データベースを作成する必要がありますさを探していますはじめてインストールされました。その名前が変更されていないので、事前に
おかげで、
TheIlleterate
http://www.vogella.com/articles/AndroidSQLite/article.html#databasetutorialの 'SQLiteOpenHelper'を参照してください。必要なときにのみデータベースを作成します。 – zapl