code demo custom provider sanpham

Code: Java | Auth: 03cd82
///======= lớp MyDbHelper 

public class MyDbHelper extends SQLiteOpenHelper {
    static String DB_NAME ="db_banhang";
    static int VERSION = 1;

    public MyDbHelper(@Nullable Context context) {
        super(context, DB_NAME, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

        String sql = "CREATE TABLE tb_sanpham( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
                " name TEXT NOT NULL UNIQUE ); ";
        sqLiteDatabase.execSQL(sql);

        // chèn dữ liệu DEMO
        String sql_insert = "INSERT INTO tb_sanpham (name) VALUES('Điện thoại'), " +
                " ('Máy tính'),('Tivi'), ('Tủ lạnh') ";
        sqLiteDatabase.execSQL(sql_insert);

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

//================== file DAO SanPhamDAO

public class SanPhamDAO {
    MyDbHelper dbHelper;
    SQLiteDatabase db;

    public SanPhamDAO(Context context){
        dbHelper = new MyDbHelper(context);
        db = dbHelper.getWritableDatabase();
    }


    // xây dựng hàm trả dữ liệu về cho provider
    public Cursor providerSelectAll(String[] columns,String selection, String[] selectionArgs,String orderBy ){
        Cursor c = db.query("tb_sanpham", columns, selection, selectionArgs, null, null,orderBy );
        return  c;
    }


//    public Cursor query(String table, String[] columns,
//                        String selection, String[] selectionArgs,
//                        String groupBy, String having, String orderBy) {
//        throw new RuntimeException("Stub!");
//    }
}

///================= lớp SanPhamProvider 

public class SanPhamProvider extends ContentProvider {
    public static String AUTHOR = "vn.edu.spx.demoprovidersanpham_src.sanphamProvider";
    public static String TB_SANPHAM = "tb_sanpham";

    // URI:  content://vn.edu.spx.demoprovidersanpham_src.Provider/tb_sanpham

    UriMatcher uriMatcher;// quản lý danh sách uri và xác định người dùng vào uri nào
    SanPhamDAO sanPhamDAO;
    Cursor cursor;

    @Override
    public boolean onCreate() {
        // khởi tạo các giá trị
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI(AUTHOR,TB_SANPHAM, 1); //content://vn.edu.spx.demoprovidersanpham_src.Provider/tb_sanpham
        uriMatcher.addURI(AUTHOR, TB_SANPHAM + "/#", 2); //content://vn.edu.spx.demoprovidersanpham_src.Provider/tb_sanpham/3

        // khởi tạo DAO
        sanPhamDAO = new SanPhamDAO( getContext() );

        return false;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] strings,
                        @Nullable String s, @Nullable String[] strings1,
                        @Nullable String s1) {
        int code_uri_matcher = uriMatcher.match( uri );
        Log.d("zzzzz", "query: code uri =  " + code_uri_matcher);

        switch (code_uri_matcher){
            case 1:  // gọi DAO lấy tất cả dữ liệu trong bảng
                cursor = sanPhamDAO.providerSelectAll(strings,s, strings1, s1);
                break;
            case 2:
                //xử lý lấy 1 bản ghi trả về
                String strWhere = "id = " + uri.getPathSegments().get(1);
                cursor = sanPhamDAO.providerSelectAll(strings,strWhere, strings1, s1);
                break;
        }
         
        return cursor;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
        return null;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }
}

//========== đăng ký manifest

  <provider
            android:authorities="vn.edu.spx.demoprovidersanpham_src.sanphamProvider"
            android:name=".Provider.SanPhamProvider"
			android:exported="true"
			/>


///============= Bên ứng dụng Client thực hiện thao tác sau để lấy dữ liệu và hiển thị lên log

 Uri uri0001 = Uri.parse("content://vn.edu.spx.demoprovidersanpham_src.sanphamProvider/tb_sanpham");

        Cursor cursor = getContentResolver().query(uri0001,null, null, null, null);
        
        cursor.moveToFirst();
        while (!cursor.isAfterLast()){

            Log.d("zzzz", "dòng dữ liệu id = " + cursor.getInt(0) + ", name = " + cursor.getString(1));
            cursor.moveToNext();
        }