整体思路:
ContentProvider和ContentResolver的使用
要使用内容提供者和内容获取者,就必须要有两个应用
1个应用是内容提供者(这里面有数据库,有数据的增删改查的方法,uri,有ContentProvider),另外1个应用是内容接收者(根据内容提供者提供的uri对提供者的数据进行相应的操作,这里有ContentResolver)。
ContentProvider(内容提供者)
首先建立一个Module命名为ContentProviderDemo,在它下面建立两个包,一个是database包,另外一个是provider包。(因为内容提供者没有数据展示,所以没有布局文件)。ContentProvider就是讲自己数据库里的数据提供出去。
1.初始化数据库和数据,并提供增删改查的方法。
在database包下建立一个MyDataBase.java的类并继承SQLiteOpenHelper。增加构造函数并重写初始化数据库和升级数据库的两个方法。代码如下。
public class MyDataBase extends SQLiteOpenHelper {
//构造函数有四个参数,第一个是上下文,第二个是数据库名,第三个是游标工厂为null就行,第四个是数据库版本,默认为1。前期固定数据库名和版本号。
private static final String DBNAME="Students";
private static final int VERSION=1;
public DataBaseOpenHelper(Context context) {
super(context, DBNAME, null, VERSION);
}
//在onCreate()方法中初始化数据库、建表和添加初始数据。
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table student(id Integer primary key , name varchar(20),sex varchar(2),age Integer);";
//执行sql语句建表
db.execSQL(sql);
//初始化数据
sql = "insert into student values(1,'貂蝉','女',20)" ;
db.execSQL(sql);
sql = "insert into student values(2,'赵云','男',24)" ;
db.execSQL(sql);
sql = "insert into student values(3,'小乔','女',21)" ;
db.execSQL(sql);
}
//升级数据库是使用onUpgrade()方法;
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
2.编写一个MyContentProvider的类继承ContentProvider将自己的数