您的位置:首页 > 移动开发 > Android开发

Android内容提供器

2018-02-15 16:24 239 查看
需要别的应用的数据时,需要获得权限因为有一些涉及到用户的隐私性,而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时我们,我们会得到自己定义的代码,这样子就可知道想对我们的内容提供器做什么操作





然后在相对应的类中把方法完善即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android