Android中ContentProvider的简单使用
1、新建继承ContentProvider的类
package com.wangzhu.demo; import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri; public class MyContentProvider extends ContentProvider { /**
* ContentProvider的数据访问路径
*/
public static final Uri URI = Uri.parse("content://com.wangzhu.provider"); private SQLiteDatabase database; @Override
public int delete(Uri arg0, String arg1, String[] arg2) {
return 0;
} @Override
public String getType(Uri arg0) {
return null;
} @Override
public Uri insert(Uri uri, ContentValues values) {
database.insert("tab", "_id", values);
return null;
} @Override
public boolean onCreate() {
database = getContext().openOrCreateDatabase("myProvider.db3",
Context.MODE_PRIVATE, null);
database.execSQL("create table IF NOT EXISTS tab(_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL)");
return true;
} @Override
public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
String arg4) {
Cursor cursor = database.query("tab", null, null, null, null, null,
null);
return cursor;
} @Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
return 0;
} }
2、在AndroidManifest.xml中为应用程序添加ContentProvider的访问权限
<!-- android:exported设置为true,表示其他应用可以访问,否则不可以访问 -->
<provider
android:name="MyContentProvider"
android:authorities="com.wangzhu.provider"
android:exported="true" >
</provider>
3、进行插入与查询
final Uri uri = MyContentProvider.URI; /**
* 往Provider中写入数据
*/
protected void write() {
//使用getContentResolver()方法获取ContentResolver对象
ContentResolver resolver = getContentResolver();
ContentValues values = null; values = new ContentValues();
values.put("name", "Java");
//调用ContentResolver对象的insert方法,插入数据
resolver.insert(uri, values); values = new ContentValues();
values.put("name", "Swift");
resolver.insert(uri, values); values = new ContentValues();
values.put("name", "Python");
resolver.insert(uri, values); values = new ContentValues();
values.put("name", "C#");
resolver.insert(uri, values); } /**
* 读取Provider中的内容
*/
protected void read() {
StringBuilder accum = new StringBuilder(); //使用getContentResolver()方法获取ContentResolver对象
//调用ContentResolver对象的query方法,查询数据,返回Cursor对象
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
for (int i = 0, count = cursor.getCount(); i < count; i++) {
accum.append(cursor.getString(cursor.getColumnIndex("name")))
.append("\n");
cursor.moveToNext();
}
System.err.println("read: " + accum);
}
Android中ContentProvider的简单使用的更多相关文章
- [原创]Android中LocationManager的简单使用,获取当前位置
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置:注册/注销来自某个 LocationProvider的周期性的位置更新:以及注册/注销接近 ...
- android中的回调简单认识
首先说一下最抽象的形式--2个类,A类和B类.A类含有1个接口.1个接口变量.(可能含有)1个为接口变量赋值的方法以及1个会使用接口变量的"地方";B类实现A中的接口,(可能)含有 ...
- Android中ProgressDialog的简单示例
网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下: 建立android工程等工作都略去,Google一下就可以了. 下面来介绍主 ...
- Android学习记录(3)—Android中ContentProvider的基本原理学习总结
一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据 ...
- iOS 和Android中的正则表达式简单使用
ios 中需要使用NSRegularExpression类,NSTextCheckingResult类. 下面给出最基本的实现代码 NSRegularExpression *regex = [NSRe ...
- Android中SharePreferences的简单实现
Android中提供SharePreferences这种轻量级的数据存储模式,这种模式能够存储少量数据,并能为自身和其他应用提供数据接口.相对于其他数据存储方式,SharePreferences更加轻 ...
- Android中实现一个简单的逐帧动画(附代码下载)
场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 ...
- Android中Tomcat的简单配置和使用
因为学Android已经有一段时间了,但是在学校,服务器方面是个短板啊,没有专门的服务器拿给我们学生练手,所以只有自己找办法了.当然,Tomcat就是不二的选择了. 在网上看了看资料,还是觉得自己记录 ...
- Android中SharedPerforences的简单使用示例 --Android基础
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedP ...
随机推荐
- Assembly(程序集) 反射和缓存
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Spring-Mybatis 异常记录(1)
Spring applicationconfig.xml如下 <?xml version="1.0" encoding="UTF-8"?> < ...
- net中的编译
1.MSBuild 四个基本块(属性.项.任务.目标): MSBuild属性: 属性是一些键/值对,主要用来存储一些配置信息. MSBuild 项: 主要是存储一些项目文件信息,以及文件的元 ...
- 比较不错的JS 曲线图
fashion chart falsh文件支持,无需考虑兼容 Highcharts(纯JS,很漂亮 效果很好) Highcharts是一个制作图表的纯Javascript类库,主要特性如下: 兼容 ...
- 如何在SAE上使用DjangoUeditor
之前的一个项目是部署到SAE上的,其中富文本编辑器使用到了Ueditor,对于Django有一个开源项目DjangoUeditor可以简化继承过程,直接引用app就可以使用.但是不支持SAE的文件上传 ...
- MySQL主从修复
MySQL主从故障修复 测试库:192.168.1.2 主192.168.1.3 从 192.168.1.4 主 4又是2的从库192.168.1.5 从 有人修改了192.168.1.2和192.1 ...
- 【jquery】javaScript中prototype的妙用 巧妙运用prototype属性原型链创建对象
prototype 可以有好多有优化实现方法 http://blog.csdn.net/liuqiwen0512/article/details/8089690 在 JavaScript 中,每个函 ...
- 用于主题检测的临时日志(d94169f9-f1c0-45a2-82d4-6edc4bd35539 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
这是一个未删除的临时日志.请手动删除它.(5327dce0-d2d1-4fba-8801-d3ff67564a96 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
- JPages分页插件的使用
废话不多说,直接上代码. 首先下载JPages的js和css包,附上下载地址:http://dl.oschina.net/softfile/jpages/jpages-latest-138554713 ...
- wamp下修改mysql root用户的登录密码
1.安装好wamp后,运行WampServer程序,进入MYSQL控制台; 2.进入控制台后,提示输入密码(不用输入任何密码,因为密码为空),按回车键进入; 3.输入“USE mysql;”然后回车, ...