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,

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

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

http://www.vogella.com/articles/AndroidSQLite/article.html

"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?

  • SQLiteDatabase.insert () devuelve rowid incorrecto para tablas virtuales
  • Android concurrencia sqlite sin excepciones
  • Android sqlite - selecciona registros donde el campo es nulo o vacío
  • Cursor.getType () y CursorIndexOutOfBoundsException excepción
  • ¿Rellenar la base de datos de Android desde el archivo CSV?
  • Eliminar varias filas de contentprovider
  • Filtrar el parámetro ListView por 'selección' en CursorLoader
  • Ejecución de varias sentencias con SQLiteDatabase.execSQL
  • Android SQLiteConstraintException: código de error 19: error de restricción
  • Consulta del proveedor de contenido de Android cláusula IN
  • Creación de una función personalizada en sqlite3 en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.