Android组件系列—-ContentProvider内容提供商【5】

Android组件系列—-ContentProvider内容提供商【5】

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

2、执行query()方法,查询全部记录(眼下一共两条记录)。后台输出效果例如以下:

c5324531-b69a-46f1-be87-295d5e23806b

经測试,其它方法也都是能够运行的。

事实证明,新建的另外一个project文件ContentResolverTest中。在里面执行单元測试。也是可以执行的(单元測试的代码不变,实现的CRUD功能也一模一样),也就是说,可以对ContentProviderTest01中的SQLite进行CRUD操作。

比如,执行query()方法,后台输出例如以下:

4180318a-9f6a-42ea-95de-cdc3548c7bd2

这样,我们的目的也就达到了。

【特别注意】

须要特别注意的是,代码中uri不要写错了,这些错误一旦发生。非常难被发现

详细表如今:

1、清单文件里:

<provider
    android:name=".内容提供者的类名" 
    android:authorities="包名.内容提供者的类名" >
</provider>

如:

        <provider
            android:name=".PersonContentProvider"
            android:authorities="com.example.contentprovidertest01.PersonContentProvider" >
        </provider>

2、ContentProvider类中的UriMatcher中的uri:

复制代码
 1     private static final UriMatcher URI_MATCHER = new UriMatcher(
 2             UriMatcher.NO_MATCH);// 默认的规则是不匹配的
 3     private static final int PERSON = 1; // 操作单行记录
 4     private static final int PERSONS = 2; // 操作多行记录
 5     // 往UriMatcher中加入匹配规则。

注意,这里面的url不要写错了,我就是由于写错了,半天没调试出来。哎··· 6 static { 7 // 加入两个URI筛选 8 URI_MATCHER.addURI("com.example.contentprovidertest01.PersonContentProvider", 9 "person", PERSONS); 10 // 使用通配符#,匹配随意数字 11 URI_MATCHER.addURI("com.example.contentprovidertest01.PersonContentProvider", 12 "person/#", PERSON); 13 }

复制代码

3、ContentProvider类中的getType()方法里面的代码:

复制代码
 1     @Override
 2     public String getType(Uri uri) {
 3         int flag = URI_MATCHER.match(uri);
 4         switch (flag) {
 5         case PERSON:
 6             return "vnd.android.cursor.item/person"; // 假设是单条记录,则为vnd.android.cursor.item/
 7                                                         // + path
 8         case PERSONS:
 9             return "vnd.android.cursor.dir/persons"; // 假设是多条记录,则为vnd.android.cursor.dir/
10                                                         // + path
11         }
12         return null;
13     }
复制代码

4、ContentResolver类中的uri:(以insert()方法为例)

复制代码
 1     //測试方法:向数据库中加入记录。

假设之前没有数据库。则会自己主动创建 2 public void insert() { 3 // 使用内容解析者ContentResolver訪问内容提供者ContentProvider 4 ContentResolver contentResolver = getContext().getContentResolver(); 5 ContentValues values = new ContentValues(); 6 values.put("name", "生命贰号"); 7 values.put("address", "湖北"); 8 // content://authorities/person 9 // http:// 10 Uri uri = Uri 11 .parse("content://com.example.contentprovidertest01.PersonContentProvider/person"); 12 contentResolver.insert(uri, values); 13 }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117398.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • getparameter方法的作用_have got和have的区别

    getparameter方法的作用_have got和have的区别getParameter和getAttribute区别(超详细分析)对getParameter过程,如下图:对getAttribute过程,如下图:两者区别:①getParameter()获取的是客户端设置的数据。getAttribute()获取的是服务器设置的数据。②getParameter()永远返回字符串getAttribute()返…

    2022年10月24日
  • spring容器创建对象的时间和懒加载

    spring容器创建对象的时间和懒加载

  • Codelf 搜索开源代码帮程序员命名

    Codelf 搜索开源代码帮程序员命名”计算机科学里两件最难的事:缓存失效和命名。”Codelf通过搜索在线开源平台Github,Bitbucket,GoogleCode,Codeplex,Sourceforge,FedoraProject的项目源码,帮开发者从中找出已有的匹配关键字的变量名,从而帮助为变量名苦恼的开发者命名。这个搜索服务支持直接搜索中文。Codelf由前网易前端工程师知名移动前端调试工具MIHT

  • Angular面试题_session面试题

    Angular面试题_session面试题二十、angular的缺点有哪些?1.强约束导致学习成本较高,对前端不友好。但遵守AngularJS的约定时,生产力会很高,对Java程序员友好。2.不利于SEO因为所有内容都是动态获取并渲染生成的,搜索引擎没法爬取。一种解决办法是,对于正常用户的访问,服务器响应AngularJS应用的内容;对于搜索引擎的访问,则响应专门针对SEO…

    2022年10月17日
  • 十大经典排序算法+sort排序

    十大经典排序算法+sort排序本文转自:"十大经典排序算法",其中有动图+代码详解,本文简单介绍+个人理解。排序算法经典的算法问题,也是面试过程中经常被问到的问题。排序算法简单分类如下:这些排序算法的

  • 汇编语言—移位指令

    汇编语言—移位指令移位指令是一组经常使用的指令,包括:算数移位、逻辑移位、双精度移位、循环移位、带进位的循环移位;移位指令都有一个指定需要移动的二进制位数的操作数,该操作数可以是立即数,也可以是CL的值;在8086中,该操作数只能是1,但是在其后的CPU中,该立即数可以是定义域[1,31]之内的数;一、算数移位指令:算数移位指令分为:算数左移SAL(ShiftAlgebraicLeft)和算数右移S

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号