Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de Urimatcher

Código fuente de Urimatcher

El método ContentProvider se utiliza aquí para definir la base de datos. .

La clase pública AlarmProvider extiende ContentProvider //

{

Cadena final estática privada DB_NAME = " Alarm.db//Nombre de la base de datos

private static final int DB _ VERSION = 1; //Número de versión, cuando el programa se ejecuta por primera vez, se crea la base de datos, si

//Cambia la base de datos, como agregar una tabla. en este momento. , el valor generalmente se cambiará para que el programa pueda instalarse y ejecutarse nuevamente

La base de datos se puede actualizar manualmente

Cadena final ALARMA _. TABLE _ NAME = "alarm//Un nombre de tabla

Privado static final int ALARM = 1; //El valor entero correspondiente a la tabla, equivalente a id.

UriMatcher estático privado mUriMathcer//Comparador de uri, que establece la relación entre Uri, nombre de tabla e ID, como se muestra a continuación:

estático {

mUriMathcer = new UriMatcher(UriMatcher.NO_MATCH);

mUriMathcer.addURI(AlarmInfo.AUTH,"alarm",alarm);

}

Interfaz privada crear interfaz de tabla //interfaz de creación de tabla

{

Public abstract void createAlarmTable(SQLiteDatabase db);

}

// Clase interna, base de datos Clase auxiliar, implementa la interfaz de creación de tablas.

La clase estática privada DatabaseHelper extiende SQLiteOpenHelper para implementar CreateTableInterface

{

crear interfaz de tabla mCreateTableInterface = this;

Contexto mContext = null

p>

//Constructor, después de llamar a esta función, la base de datos no se

//creada. . Es decir, onCreate a continuación no llama a create db inmediatamente después de ser llamado.

Asistente de base de datos público (contexto de contexto)

{

super(contexto, DB_NAME, null, DB _ VERSION); log.I(etiqueta, "¡Se llamó a DatabaseHelper!");

mContext = contexto

}

@override

public; Void Once Create (SQLite Database DB) // Este método solo se llama una vez cuando se crea la conexión de la base de datos.

{

//Crear tabla de base de datos

mcreatetableinterface .createalarmtable(db);

}

@. Anular

public void al actualizar (base de datos SQLite, versión anterior int, versión nueva int) // Se llama cuando se actualiza la base de datos.

{

//log . I(marca, "¡se llamó a onUpgrade()!");

db exec SQL(" DROP TABLE IF EXISTS. "ALARM_TABLE_NAME);

onCreate(db);

}

@OVERRIDE

public void createAlarmTable(base de datos SQLiteDatabase)

{

//Crear una tabla

db . exec SQL(" CREATE TABLE " ALARM _ TABLE _ NAME "("

Alarmist. _ID "Clave primaria entera",

Alarmist. _LABEL "El texto no está vacío",

Alarmist "El texto no está vacío",

Alarmist. "El texto no está vacío",

Alarmista. _REPEAT "El texto no está vacío",

Alarmista "El texto no está vacío".

"); ");

//Inserta algunos datos en la tabla. . .

db . exec SQL(" INSERTAR EN " ALARMA _ TABLA _ NOMBRE "(" ALARMA info._LABEL ","

ALARMA._TIME ", " ALARMA info._ALERT ", "

AlarmInfo. _REPEAT. _ACTIVE

") valores ('Alarma de Almuerzo', '11:45 AM', 'Tono'. tag.EVERY_DAY "',' false ');");

db .exec SQL("INSERT INTO "ALARM_TABLE_NAME"("ALARM info._LABEL","

ALERT. _TIME ", " ALERT . _REPEAT " , " ALERT . _ALERT " , " AlarmInfo . 45 AM ',' " tag. Tone " ', " " 'lunes, martes, miércoles, jueves, viernes ' "

",' false '); ");

db . exec SQL(" INSERT INTO " ALARM _ TABLE _ NAME "(" ALARM info._LABEL ", "

ALARM._TIME ", " ALARM._ALERT ", " ALARMInfo._REPEAT ", "

alarmist._Activity

") valores('WorkAlert', '09:00 AM', '" tag. Tone"',"

" ' " tag. fin de semana " ', 'false'); ");

db exec(" INSERTAR EN " ALARMA _ TABLA _ NOMBRE "(" Información de ALARMA. ._LABEL ", "

p>

Alarmismo _TIME "," Alarmismo _ALERT ", " AlarmInfo ", "

Alarmismo.

_Actividad

") valores('Yoga', '10:15 p.m.', '"etiqueta. Tono "', "," 'Domingo, miércoles', 'Falso');"); > p>

}

}

}

Private DatabaseHelper mDatabaseHelper//Asistente de definición

//Reescribe la siguiente inserción , eliminar, actualizar, consultar y otros métodos.

@Override

público sincronizado int eliminar(Uri Uri, selección de cadena, cadena[] selecciónArgs)

{

SQLiteDatabase db = nulo

éxito booleano = falso;

int count = 0;

prueba {

db = mdatabasehelper.getwritabledatabase(); /p>

db . adquirir referencia();

Éxito = verdadero;

Cambiar(mUriMathcer.match(uri)){

Alerta de caso :

count = db .delete(ALARM_TABLE_NAME, selección, argumentos de selección

Roto

}

}catch(SQLException); e){

e . printstacktrace();

}Finalmente {

if(success == true){

db. referencia de lanzamiento();

}

}

Recuento de devoluciones;

}

@Override

Cadena pública getType(Uri uri)

{

Switch(mUriMathcer.match(uri)){

Alarma de caso:

Devolver información de alarma.

Tipo de contenido;

Valor predeterminado:

Lanzar nueva IllegalArgumentException("URI desconocido " uri); >

@Override

Inserción de Uri de sincronización pública (Uri uri, ContentValues ​​​​initValues)

{

SQLiteDatabase mSQLiteDatabase = null;

Éxito booleano = falso;

Pruebe {

mSQLiteDatabase = mdatabasehelper . getwritabledatabase()

msqlitedatabase

.

Éxito = verdadero;

long mRowId

Valor de ContentValues ​​​​;

if(initValues ​​​​== null){

valores = nuevos valores de contenido();

}else{

valores = initValues

}

cambiar (mUriMathcer.match(uri)){

Alerta de caso:

mro wid = msqlitedatabase .

_ID, valores);

if (mro wid gt; 0){

return uri

} en caso contrario {

lanzar nueva SQLException ("No se puede insertar" uri);

}

}

}catch(SQLException e){

e . );

}Finalmente {

if (éxito == verdadero)

msqlitedatabase . p>

Devolver nulo

}

@Override

público booleano onCreate()

{

//log .

}

@Override

Consulta de cursor pública sincronizada (Uri uri, proyección String[], selección de cadena,

String[] SelectionArgs, String sortOrder)

{

SQLiteQueryBuilder mSQLiteQueryBuilder = new SQLiteQueryBuilder();

Cambiar (mUriMathcer.match(uri)){

Alerta de caso:

msqlitequerybuilder.settables(ALARM_TABLE_NAME);

Rompiendo;

}

SQLiteDatabase mSQLiteDatabase = mdatabasehelper . );

msqlitedatabase . adquirir referencia();

cursor mCursor = msqlitequerybuilder . orden);

msqlitedatabase . referencia de versión();

Devolver mCursor

}

@ Anular

Actualización int de sincronización pública (Uri uri, valor ContentValues, selección de cadena,

String[] SelectionArgs)

{

SQLiteDatabase mSQLiteDatabase = null

int count = 0;

éxito booleano = false

prueba {

mSQLiteDatabase = mdatabasehelper ();

msqlitedatabase.acquire referencia();

Éxito=True;

Cambiar(mUriMat

hcer.match(uri)){

Alerta de caso:

cuenta = actualización de base de datos msqlite (ALARM_TABLE_NAME, valores,

selección, argumentos de selección <); /p>

Romper;

Valor predeterminado:

Romper

}

}catch(SQLException e) {

e . printstacktrace();

}Finalmente {

if (éxito == verdadero)

referencia de lanzamiento de msqlite();

}

Recuento de devoluciones;

}

}

Puedes consultar la alarma de Android, La fuente El código de consulta, actualización y otros métodos básicamente no realiza ningún cambio, solo reemplaza el nombre de la tabla. O agregue un caso.