当前位置: 首页 > news >正文

宝尊电商是做什么的温州seo优化

宝尊电商是做什么的,温州seo优化,域名注册了后怎么建设网站,秦皇岛市住房和城乡建设局网站内容提供者的简单使用 最近在复习ContentProvider时遇到了一些问题,几经波折,终于解决了,故写下这篇博客,希望能帮到有相同问题的兄弟。 何时使用 当我们想要一个应用的数据向外部公开时,ContentProvider是一个不错…

内容提供者的简单使用

最近在复习ContentProvider时遇到了一些问题,几经波折,终于解决了,故写下这篇博客,希望能帮到有相同问题的兄弟。

何时使用

当我们想要一个应用的数据向外部公开时,ContentProvider是一个不错的选择

怎么使用

我把两个应用分别叫做client和service,client是我的需要请求其他数据的应用,service是提供数据的应用

先生成service

需要生成ContentProvider的子类

public class MyProvider extends ContentProvider {public MyProvider() {}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {// Implement this to handle requests to delete one or more rows.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic String getType(Uri uri) {// TODO: Implement this to handle requests for the MIME type of the data// at the given URI.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic Uri insert(Uri uri, ContentValues values) {// TODO: Implement this to handle requests to insert a new row.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic boolean onCreate() {// TODO: Implement this to initialize your content provider on startup.return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {// TODO: Implement this to handle query requests from clients.return getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// TODO: Implement this to handle requests to update one or more rows.throw new UnsupportedOperationException("Not yet implemented");}
}

里面都是一些默认方法,只是重写了query这个查询方法。内容提供器属于四大组件之一,使用时要先声明

<application><providerandroid:name=".MyProvider"android:authorities="com.example.myprivider.provider"android:enabled="true"android:exported="true" />
</application>

这里的重点是authorities属性,他表明外部应该通过com.example.myprivider.provider来访问我们的ContentProvider,格式默认是包名.provider,同时也要enabled启动ContentProvider和exported允许外部访问

由于query方法访问我们的手机通讯录,我们在使用时先添加权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_CONTACTS" /></manifest>

代码请求权限

requestPermission(this, Manifest.permission.READ_CONTACTS);public static void requestPermission(Activity activity, String permission) {if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(activity, new String[]{permission}, 1);}
}

这样我们的service应用就写好了。

写出client应用来访问数据

这个代码比较简单

Uri uri = Uri.parse("content://com.example.myprivider.provider");
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {StringBuilder sb = new StringBuilder();do {@SuppressLint("Range") String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));@SuppressLint("Range") String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));sb.append(name).append(", ").append(number).append("\n");} while (cursor.moveToNext());binding.textView.setText(sb);
}

观察一下,uri比较重要,他是我们访问ContentProvider的重要角色,一般格式是content://访问的包名.provider/表名/序号。访问的包名.provider并不是绝对的,和我们的authorities属性(已加粗,往上找)有关,建议直接复制。其中表名和序号可有可无,具体看service中ContentProvider的实现,一般用来做一下标记,方便知道查询的是哪张表。
我们写完之后,还是不能直接访问,高版本的sdk要求我们必须提前声明要查询哪一个ContentProvider

<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><queries><package android:name="com.example.myprivider" /></queries>
</manifest >

这里的包名就是我们service的包名了

做完之后,先启动我们的service,申请访问权限,在启动client,就可以通过ContentProvider间接访问到通讯录了。

使用总结

1.ContentProvider一般配合SQLiteOpenHelper组合使用,db的query方法也是生成Cursor类,可以直接被ContentProvider返回
2.service应用一定要先启动
3.剩下的看评论区问题,再补充

http://www.yayakq.cn/news/795511/

相关文章:

  • 昆明网站公司建设甘肃省专业做网站
  • 如何建设下载网站ps如何做ppt模板下载网站
  • wordpress个人网站赚钱体育网站开发的目的
  • 网站建设论文标题百度首页排名优化哪家专业
  • 网站关键字优化价格用ps制作黑色高光网站按钮
  • 网站虚拟机可以自己做吗广州购物网站设计
  • 营业执照注册网站网站外包注意事项
  • 网站开发项目任务接软件开发项目的平台
  • 网站实施就是网站建设微信电子宣传册制作app
  • 用dw做网站的视频做网站niche
  • 新农村建设专题网站建设电影网站点击播放是乱页的
  • 网站工程工资一般多少钱百度爱采购推广平台
  • 广州网站建设服务哪家好淡蓝色网站
  • 可以搜索国外网站的搜索引擎网站怎么做才能赚钱
  • 自己建设的网站有管理后台的登录wordpress手机版难看
  • 怎么给自己网站做搜索框网络推广平台几大类
  • 网站设计与制作教程1微信服务号功能开发
  • 网页和站点的区别山西住房和城乡建设厅网站
  • 四川建设机械网站关键词推广分析
  • 做淘宝那样的网站要多少钱营销型网站建设明细
  • 网站备案号注销的结果青岛高端网站开发
  • 苏州智能网站开发wordpress响应式菜单
  • 站酷设计网站官哈尔滨个人建站模板
  • 网站框架规划自己做视频网站资源从哪里来
  • 网站开发费属于研发费用吗给家乡做网站
  • 网站建设的种类建设商城网站公司百度百科
  • php电子商务网站开发成都专业app开发服务
  • 淮阳 网站建设wordpress主题 q9主题
  • 广东外贸网站推广公司普通人学python有意义吗
  • 企业网站导航代码wordpress固定链接 404 nginx