ContentProvider使用
来源:互联网 发布:淘宝综合排名规则 编辑:程序博客网 时间:2024/06/05 12:07
ContentProvider很少用到、用于暴漏数据给外部程序访问。
首先还是DBHelper,因为ContentProvider最终还是调用的DBHelper
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "database.db";
private static final int DB_VERSION = 1;
private SQLiteDatabase db ;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
db = getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
StringBuffer sql = new StringBuffer();
sql.append( "CREATE TABLE table_like ( " );
sql.append( " _id INTEGER PRIMARY KEY, " );
sql.append( " brand_name TEXT, " );
sql.append( " short_title TEXT " );
sql.append( ") " );
db.execSQL(sql.toString());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < newVersion) {
onCreate(db);
}
}
public void excuteSQL(String sql, Object... bindArgs) {
db.execSQL(sql, bindArgs);
}
public Cursor query(String sql, String... selectionArgs) {
return db .rawQuery(sql, selectionArgs);
}
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String orderBy) {
return db .query(table, columns, selection, selectionArgs, null, null , orderBy);
}
public long insert(String table, ContentValues values) {
return db .insert(table, null, values);
}
public int update(String table, ContentValues values, String whereClause, String[] whereArgs) {
return db .update(table, values, whereClause, whereArgs);
}
public int delete(String table, String whereClause, String[] whereArgs) {
return db .delete(table, whereClause, whereArgs);
}
}
//第二部、自定义contentProvider继承系统的ContentProvider(将DBhelper对象的方法进行封装)
public class MyContentProvider extends ContentProvider {
public static final UriMatcher URI_MATCHER= new UriMatcher(UriMatcher.NO_MATCH );
public static final int TUAN=1;
public static final String TUAN_NAME= "Tuan";
public static final String AUTHORITY="com.lb.contentprovider" ;//这个和注册的路径一致
private DBHelper db ;
static{
//向外暴漏的接口 uri,TUAN参数是用来判断根据TUAN来判断操作哪个表
URI_MATCHER.addURI(AUTHORITY, "tuan", TUAN);
}
@Override
public boolean onCreate() {
//实例化DB
db= new DBHelper(getContext());
return true ;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int code = URI_MATCHER.match(uri); //得到这个uri的code码、进行判断
int row =0;
switch (code) {
case TUAN :
row= db.delete( TUAN_NAME, selection, selectionArgs);
break;
default:
break;
}
return row;
}
@Override
public String getType(Uri uri) {
return null ;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
int code =URI_MATCHER.match(uri);
switch (code) {
case TUAN :
db.insert( TUAN_NAME, values);
break;
default:
break;
}
return null ;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor c = null;
int code=URI_MATCHER .match(uri);
switch (code) {
case TUAN :
c= db.query( TUAN_NAME, projection, selection, selectionArgs, sortOrder);
break;
default:
break;
}
return c;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int i =0;
int code =URI_MATCHER.match(uri);
switch (code) {
case TUAN :
i= db.update( TUAN_NAME, values, selection, selectionArgs);
break;
default:
break;
}
return i;
}
}
//第三部、在配置文件注册!!!
<provider
android:name="com.lb.contentprovider.MyContentProvider"
android:authorities="com.lb.contentprovider"
android:exported="true" //为true外部程序才能访问
tools:ignore="ExportedContentProvider" />
接着是另外一个apk程序来访问
插入
ContentResolver resolver = getContentResolver();
ContentValues values = new ContentValues();
values.put( "brand_name", text1 .getText().toString());
values.put( "short_title", text2 .getText().toString());
resolver.insert(Uri. parse(Constants.URI), values);
Constants. URI="content://com.lb.contentprovider/tuan" ;
0 0
- ContentProvider使用
- 使用ContentProvider
- 使用ContentProvider
- ContentProvider 使用
- ContentProvider使用
- ContentProvider使用
- 使用ContentProvider
- 使用ContentProvider
- ContentProvider和ContentProvider的使用和原理
- ContentProvider与ContentResolver使用
- ContentProvider简单使用
- android ContentProvider解析使用
- 使用ContentProvider共享数据
- 使用ContentProvider共享数据
- 使用ContentProvider共享数据
- Android ContentProvider的使用
- 使用ContentProvider共享数据
- 数据库里面使用ContentProvider
- 心得
- MyEclipse在导入jQuery类库后报错的解决办法。
- 使用if IE语句判断浏览器IE版本及添加升级提示
- IPC框架分析 Binder,Service,Service manager
- Gradle 构建android程序
- ContentProvider使用
- android 单击和滚动效果调整
- 解决SVN检出的maven项目不是maven项目
- 严重: StandardServer.await: create[8005]:
- MFC移动控件到指定位置
- Android传感器开发
- 实现点击Item可让Item跳到屏幕中间的HorizontalScrollView
- Android之SurfaceView
- NoSQL数据库的分布式模型