说明一下
本项目有个问题需要说明一下,就是provider的onCreate()方法会先于Activity的onCreate()方法执行,所以DatabaseTest项目一运行,就会先执行provider的onCreate()方法,创建数据库
前提
本项目在前面DatabaseTest项目的基础上进行更改,首先将MyDatabaseHelper中使用Toast弹出数据库创建成功的提示去掉,因为跨程序访问时我们不能直接使用Toast。然后创建一个内容提供器,在包上单机右键 New->Other->Content Provider


这样就能自动导入相关的<provider>进行注册
1 | <provider |
DatabaseProvider 代码
1 | public class DatabaseProvider extends ContentProvider { |
几个注意点
onCreate()中借用MyDataBaseHelper完成数据库的创建或升级,并且provider的onCreate()方法会先于Activity的onCreate()方法执行query()返回cursorinsert()返回能够表示这条新增数据的URIupdate()和delete()返回受影响的行数getPathSegments()会将内容URI权限之后的部分用/分割,并把结果放到字符串列表当中,其第0个位置放的是路径,第1个位置就是id了。
跨应用访问数据
接着在模拟器卸载重装当前应用,再创建一个新项目:ProviderTest
1.布局
1 |
|
2.主活动
1 | public class MainActivity extends AppCompatActivity { |
运行:
