Android内容提供器

需要别的应用的数据时,需要获得权限因为有一些涉及到用户的隐私性,而android6.0以后就有运行时权限的功能了
1.在AndroidManifest.xml文件中添加权限,在安装时会讯问用户是否同意。一些普通的权限系统会自动同意,而一些危险的就需要用户授权了,以下是危险的权限
这里写图片描述
2.运行时权限
这里写图片描述
首先我们用ContextCompat.checkSelfPermission()来判断,用户是否已经给我们授权,他接受两个参数,第一个是Context,而第二个是具体的权限名,比如Manifest.permission.CALL_PHONE,返回值与PackageManager.PERMISSION_GRANTED做比较,相同就说明用户已经授权了,
如果授权了,使用Intent完成你想要的操作就可以了,如果没有授权,那么我们使用ActivityCompat.requestPermissions来向用户申请权限,他接受三个参数,一个是Activity的实例,另一个是String数组,把要申请的权限给他,第三个就是请求码
当询问完用户会回调onRequestPermissionResult(),我们需要判断他是否同意了,同意了我们就直接进行我们要得操作,不然就告诉用户他拒绝了

申请权限的事我们做完了,我们下面就进入正题,访问其他程序的内容
如果想要访问内容提供器中共享的数据,那么就要借助ContentResolver类,
使用getContentResolver方法获取到该类的实例,而他的CRUD操作,和数据库类似,insert方法用于添加数据,upodate更新,delete删除,query查询
而和数据库不同的是,药房问那个内容使用的是URI
这里写图片描述
然后我们将它解析成Uri对象

Uri uri = Uri.parse("content://com.example.app.provider/table1");

有了uri我们就需要进行查询

Cusor cursor = getContentResolver().query(
            uri,
            projection,
            selection,
            selectionArgs,
            sortOrder);

这里写图片描述
这里写图片描述

有时候我们还需要自己的应用程序提供内容
这里写图片描述
这里写图片描述
这里写图片描述
我们可以借助UriMatcher这个类,通过addURI方法将我们可以识别的的Uri添加进去,他接受三个参数第一个是authority,第二个是path,第三个是自己定义的代码,这样子当调用match时我们,我们会得到自己定义的代码,这样子就可知道想对我们的内容提供器做什么操作
这里写图片描述
这里写图片描述

然后在相对应的类中把方法完善即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值