内容提供者可以实现应用间查询数据库的需求

一.在提供数据库访问的应用设置内容提供者

public class AccountProvider extends ContentProvider {
static final int QUERYSUCCESS=0; private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH); static {
sURIMatcher.addURI("com.eason.provider","query",0);
}
/*
*selectionArg查询参数
*selection查询条件
*/
@Override
public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) {
int code=sURIMatcher.match(uri);
if(code==QUERYSUCCESS){
SQLiteDatabase db =new MyOpenHelper(getContext()).getReadableDatabase();
Cursor cursor=db.query("info",projection,selection,selectionArgs,null,null,null);
return cursor;
}else throw new IllegalArgumentException("路径有问题啊兄弟");
} }
  • 记得在清单文件中配置组件
  • 在清单文件里provider节点的exported属性设置为true,没有设置将会报错
  • exported属性作用:是否支持其它应用调用当前组件。默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false.

二.在访问数据库的应用内实现内容解释者

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ContentResolver cr=getContentResolver();
Uri uri=Uri.parse("content://com.eason.provider/query");
Cursor cursor=cr.query(uri,null,null,null,null);
if (cursor.getCount()>0&&cursor!=null){
while(cursor.moveToNext()){
System.out.println(cursor.getString(1));
System.out.println(cursor.getString(2));
}
}
}
  • 执行query操作时,设置uri要根据内容提供者中的sURIMatcher.addURI("com.eason.provider","query",0)来写.

最新文章

  1. 非常提高mac生产力的一些插件归纳整理
  2. JS中 计算器的简单制作
  3. LVS+Redis部署手册
  4. 【USACO 1.5】SuperPrime Rib
  5. phpstudy配置ssl
  6. JAVA中单例模式的几种实现方式
  7. 在C#中保存Bouncy Castle生成的密钥对
  8. nyoj 106 背包问题
  9. share干什么的
  10. js中this指向问题
  11. 从内存中加载DLL Delphi版(转)
  12. 一场完美的“秒杀”:API加速的业务逻辑
  13. javaWeb基础核心之一Servlet
  14. 自学Zabbix3.6.1-触发器triggers创建
  15. BZOJ 1367: [Baltic2004]sequence [可并堆 中位数]
  16. javaweb代码生成器,专注于javaweb项通用目的代码生成器
  17. Oracle synonym 同义词
  18. angular 的navigate 各种使用情况
  19. Python解析Pcap包类源码学习
  20. Centos 7 更换yum源

热门文章

  1. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —7.网络服务Neutron配置
  2. 线程间通信wait和notify【All】简介
  3. Python基础教程(第3版) 笔记(二)
  4. shiro测试常见错误
  5. Docker总结(脑图图片)
  6. kafka的迁移干货
  7. 211. Orchard学习 二 2、ManualResetEvent 与 AutoResetEvent
  8. Eclipse 工程目录下的.classpath、.project文件和.settings文件作用
  9. EL表达式报错:  According to TLD or attribute directive in tag file, attribute value does not accept any expressions
  10. 爽爽的GSON解析