Ejemplo Content Provider

download Ejemplo Content Provider

of 9

description

programación de móviles- DAM

Transcript of Ejemplo Content Provider

  • Ejemplo content Provider

    Carpeta src

    MainActivity.java

    package com.example.contentproviders;

    import android.os.Bundle;

    import android.app.Activity;

    import android.view.Menu;

    public class MainActivity extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.activity_main, menu);

    return true;

    }

    }

    Usuarios Provider.java

    package com.example.contentproviders;

    import android.content.ContentProvider;

  • import android.content.ContentUris;

    import android.content.ContentValues;

    import android.content.UriMatcher;

    import android.database.Cursor;

    import android.database.sqlite.SQLiteDatabase;

    import android.net.Uri;

    import android.provider.BaseColumns;

    public class UsuariosProvider extends ContentProvider {

    private static final String uri = "content://com.example.contentproviders/tblUsuarios";

    public static final Uri CONTENT_URI = Uri.parse(uri);

    //Clase interna para declarar las constantes de columna

    public static final class Usuarios implements BaseColumns

    {

    private Usuarios() {}

    //Nombres de columnas

    public static final String COL_USUARIO = "usuario";

    public static final String COL_PASSWORD = "password";

    public static final String COL_EMAIL = "email";

    }

    //Base de datos

    private UsuariosSQLiteHelper usuarioDBH;

    private static final String BD_NOMBRE = "DBUsuarios";

    private static final int BD_VERSION = 1;

  • private static final String TABLA_USUARIOS = "tblUsuarios";

    //UriMatcher

    private static final int USUARIOS = 1;

    private static final int USUARIOS_ID = 2;

    private static final UriMatcher uriMatcher;

    //Inicializamos el UriMatcher

    static {

    uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

    uriMatcher.addURI("com.examples.android", "tblUsuarios", USUARIOS);

    uriMatcher.addURI("com.examples.android", "tblUsuarios/#", USUARIOS_ID);

    }

    @Override

    public int delete(Uri uri, String selection, String[] selectionArgs) {

    int cont;

    //Si es una consulta a un ID concreto construimos el WHERE

    String where = selection;

    if(uriMatcher.match(uri) == USUARIOS_ID){

    where = "_id=" + uri.getLastPathSegment();

    }

    SQLiteDatabase db = usuarioDBH.getWritableDatabase();

    cont = db.delete(TABLA_USUARIOS, where, selectionArgs);

    return cont;

    }

  • @Override

    public String getType(Uri uri) {

    int match = uriMatcher.match(uri);

    switch (match)

    {

    case USUARIOS:

    return "vnd.android.cursor.dir/vnd.example.contentproviders";

    case USUARIOS_ID:

    return "vnd.android.cursor.item/vnd.example.contentproviders";

    default:

    return null;

    }

    }

    @Override

    public Uri insert(Uri uri, ContentValues values) {

    long regId = 1;

    SQLiteDatabase db = usuarioDBH.getWritableDatabase();

    regId = db.insert(TABLA_USUARIOS, null, values);

    Uri newUri = ContentUris.withAppendedId(CONTENT_URI, regId);

    return newUri;

    }

    @Override

  • public boolean onCreate() {

    usuarioDBH = new UsuariosSQLiteHelper(getContext(), BD_NOMBRE, null,

    BD_VERSION);

    return true;

    }

    @Override

    public Cursor query(Uri uri, String[] projection, String selection,

    String[] selectionArgs, String sortOrder) {

    //Si es una consulta a un ID concreto construimos el WHERE

    String where = selection;

    if(uriMatcher.match(uri) == USUARIOS_ID){

    where = "_id=" + uri.getLastPathSegment();

    }

    SQLiteDatabase db = usuarioDBH.getWritableDatabase();

    Cursor c = db.query(TABLA_USUARIOS, projection, where,

    selectionArgs, null, null, sortOrder);

    return c;

    }

    @Override

    public int update(Uri uri, ContentValues values, String selection,

    String[] selectionArgs) {

    int cont;

    //Si es una consulta a un ID concreto construimos el WHERE

    String where = selection;

    if(uriMatcher.match(uri) == USUARIOS_ID){

  • where = "_id=" + uri.getLastPathSegment();

    }

    SQLiteDatabase db = usuarioDBH.getWritableDatabase();

    cont = db.update(TABLA_USUARIOS, values, where, selectionArgs);

    return cont;

    }

    }

    UsuariosSQLHelper.java

    package com.example.contentproviders;

    import android.content.Context;

    import android.database.sqlite.SQLiteDatabase;

    import android.database.sqlite.SQLiteDatabase.CursorFactory;

    import android.database.sqlite.SQLiteOpenHelper;

    public class UsuariosSQLiteHelper extends SQLiteOpenHelper {

    //Sentencia SQL para crear la tabla de Usuarios

    String sqlCreate = "CREATE TABLE tblUsuarios " +

    "(_id INTEGER PRIMARY KEY AUTOINCREMENT, " +

    "usuario TEXT, " +

    "password telefono TEXT, " +

    "email TEXT )";

    public UsuariosSQLiteHelper(Context contexto, String nombre, CursorFactory factory, int

    version) {

    super(contexto, nombre, factory, version);

    }

  • @Override

    public void onCreate(SQLiteDatabase db) {

    //Se ejecuta la sentencia SQL de creacin de la tabla

    db.execSQL(sqlCreate);

    //Insertamos 10 usuarios de ejemplo

    for(int i=1; i

  • Carpeta res

    layouts

    Carpeta men

    Carpeta values/ string

    P053ContentProviders Aplicacin que proporciona el Content Provider Settings Content Providers

    Manifiest