La base de datos Sqlite debe crearse una sola vez
Hv desarrollado un proyecto que tiene característica C2DM. Siempre que haya datos disponibles en el servidor; El servidor empuja los datos a todos los dispositivos que hv esta aplicación (en mi caso es un msg pequeño).
Ahora mi pregunta es hace cada vez que una base de datos y una tabla se crean donde viene un mensaje, aquí está mi código,
- Inspeccionar la base de datos android de sql desde Eclipse
- Exportar archivo de base de datos sqlite en XML y luego en la hoja de cálculo de Excel
- Rowid en SQLite3 y Android
- No se puede abrir el error de archivo de base de datos al utilizar consultas posteriores
- Consulta Sqlite que devuelve 0 incluso si el valor es nulo.
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); } }
También tengo la clase llamada MessageReceiver que extiende Broadcastreceiver; eveytime un mensaje viene la clase se ejecuta que inturn carga el MessageHelper.class aquí es el código para MessageReceiver,
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); } }
Lo que estoy buscando es, una base de datos debe ser creado cuando la aplicación se instala por primera vez.
Gracias por adelantado,
El soltero
- Android SQLite ORDER BY no funciona
- Programa ejemplo sqlite en android
- SQLiteOpenHelper "onCreate" no se llama? (El DB no existe)
- Malo rendimiento de SQLite en almacenamiento externo en Android
- Cómo acceder a la base de datos SQLite dentro de un archivo zip - android
- Actualizar archivo apk en Google Play
- Razones para utilizar la base de datos SQLite legible
- Limitación del número de filas en SQLite
La base de datos se creará una sola vez ya que su nombre no se modifica. Y sí, solo se creará en el momento en que su aplicación inicie la actividad MessageHelper por primera vez.
La base de datos se creará sólo una vez con un solo nombre.
Aquí puede optar por este código también para hacerlo más fácil
"CREATE TABLE IF NOT EXISTS" creará la tabla solamente si aún no está allí. Por lo que se creará sólo una vez. ¿Borra esta tabla en algún otro lugar?
- Cuando se emiten "com.android.vending.INSTALL_REFERRER" get enviar?
- Respecto a la actividad de Android