大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。
2、执行query()方法,查询全部记录(眼下一共两条记录)。后台输出效果例如以下:
经測试,其它方法也都是能够运行的。
事实证明,新建的另外一个project文件ContentResolverTest中。在里面执行单元測试。也是可以执行的(单元測试的代码不变,实现的CRUD功能也一模一样),也就是说,可以对ContentProviderTest01中的SQLite进行CRUD操作。
比如,执行query()方法,后台输出例如以下:
这样,我们的目的也就达到了。
【特别注意】
须要特别注意的是,代码中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账号...