• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 安卓第十四天笔记-内容提供者(ContentProvider),contentprovider

安卓第十四天笔记-内容提供者(ContentProvider),contentprovider

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了安卓contentprovider,contentprovider,contentprovider详解,contentprovider实例,no content provider等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

安卓第十四天笔记-内容提供者(ContentProvider),contentprovider


安卓第十四天笔记-内容提供者(ContentProvider)

ContentProvider--内容提供者

1.ContentProvider简介

ContentProvider是不同应用程序之间进行数据交换的一种方式或者称标准API.

  • ContentProvider以某种Uri的方式对外提供数据,允许其他应用访问或者修改数据
  • 其它的程序根据Uri去访问操作指定的数据

2.Uri简介

http://www.qq.com:80/news.jsp

  • http://:URL的协议部分,只要通过HTTP协议来访问网络,这具部分是固定的.如FTP
  • www.qq.com:域名部分
  • news.jsp:网站资源部分,访问不能的资源这具部分是不同的,这个部分是动态的

ContentProvider要求的;Uri与上面类似

 content://com.pc.pp.provider/words

 

  • content://这个Android的ContentProvider规定的,就像默认的http://,ContentProvider的协议默认就是Content://
  • com.pc.pp.provider:这部分就是ContentProvider的authorities.系统就是由这具部分来找到操作哪个ContentProvider的.只要访问指定的ContentProvider,这个部分是固定的
  • words:资源部分或者数据

3.建立ContentProvider

建立一个数据帮助类

public class BankSqliteOpenHelper extends SQLiteOpenHelper {

    public BankSqliteOpenHelper(Context context) {
        super(context, "bank.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table account(_id integer primary key, name varchar(30),money double)";
        db.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


    }

}

 

建立一个ContentProvider

  /**
本地数据库的内容提供者,

@author 刘楠 *

2016-3-2下午8:35:19 */ public class BankDbProvider extends ContentProvider {

private static final String TAG = "BankDbProvider";

private static final int ACCOUNT = 0;

private static final int ACCOUNT_ID = 1;
//默认匹配,不能匹配就执行UriMatcher.NO_MATCH
private static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
//数据库操作类
private BankSqliteOpenHelper helper;

/**
 * 初始始化一些可以匹配的URI
 */
static {

    matcher.addURI("com.itheima.bankdb.BankDbProvider", "account", ACCOUNT);
    matcher.addURI("com.itheima.bankdb.BankDbProvider", "account/#",
            ACCOUNT_ID);

}

/**
 * 这个Provider被创建时执行,做一些初始始化操作
 */
@Override
public boolean onCreate() {

    helper = new BankSqliteOpenHelper(getContext());
    return true;
}

/**
 * 查询操作
 */
@Override
public Cursor query(Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder) {

    if (matcher.match(uri) == ACCOUNT) {

        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.query("account", projection, selection,
                selectionArgs, null, null, sortOrder);
        return cursor;
    } else if (matcher.match(uri) == ACCOUNT_ID) {

        SQLiteDatabase db = helper.getReadableDatabase();
        long id = ContentUris.parseId(uri);
        Cursor cursor = db.query("account", null, "_id=?",
                new String[] { id + "" }, null, null, sortOrder);
        return cursor;
    } 
    return null;
}

/**
 * 返回类型,主要针对查询操作
 * vnd.android.cursor.dir:表示返回多条数据
 * vnd.android.cursor.item:表示返回一条数据
 */
@Override
public String getType(Uri uri) {

    if (matcher.match(uri) == ACCOUNT) {
        return "vnd.android.cursor.dir/account";
    } else if (matcher.match(uri) == ACCOUNT_ID) {

        return "vnd.android.cursor.item/account";
    }

    return null;
}

/**
 * 插入操作
 */
@Override
public Uri insert(Uri uri, ContentValues values) {

    if (matcher.match(uri) == ACCOUNT) {

        SQLiteDatabase db = helper.getWritableDatabase();
        long insert = db.insert("account", null, values);

        db.close();
    }
    return uri;

}

/**
 * 删除操作
 */
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {

    if (matcher.match(uri) == ACCOUNT) {

        SQLiteDatabase db = helper.getWritableDatabase();

        int delete = db.delete("account", selection, selectionArgs);

        db.close();
        return delete;
    }
    return 0;
}

/**
 * 更新操作
 */
@Override
public int update(Uri uri, ContentValues values, String selection,
        String[] selectionArgs) {

    if (matcher.match(uri) == ACCOUNT) {

        SQLiteDatabase db = helper.getWritableDatabase();
        int update = db.update("account", values, selection, selectionArgs);
        db.close();
        return update;
    }
    return 0;
   }

 }

 

在清单文件中注册这个provider

<!-- 注册Provider 
    authorities:对外暴露的访问路径
    -->
    <provider
        android:name="com.itheima.bankdb.provider.BankDbProvider"
        android:authorities="com.itheima.bankdb.BankDbProvider" >
    </provider>

 

authorities :可以随便定义,建立使用包名.Provider

4.访问这个应用程序的Provider

新建一个应用

ContentResolver resolver = getContentResolver();
使用这个对象来实现对象Privoider的解析
/**
 * 插入数据
 * 
 * @param v
 */
public void insert(View v) {
    ContentResolver resolver = getContentResolver();

    Uri uri = 



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 使用ContentProvider访问非数据库数据
  • ContentProvider域名替换小工具,contentprovider域名
  • 安卓第十四天笔记-内容提供者(ContentProvider),contentprovider

相关文章

  • 2017-05-26Android Studio 快捷键
  • 2017-05-26Android中接收系统广播消息
  • 2017-05-26Android安全攻防战,反编译与混淆技术完全解析(上)
  • 2017-05-26go 常用命令扼要说明
  • 2017-05-26pgpool的健康检查和failover代码
  • 2017-05-26如何通过cmdline获取panel型号的dtsi文件节点(qcom,lcd,id)
  • 2017-05-26Android学习笔记(26):Toast提示信息框浅析
  • 2017-05-26WebView,androidwebview
  • 2017-05-26Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器,simplearrayadapter
  • 2017-05-26Mobizen免帐号版,Mobizen帐号版

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android第四天,神秘封印礼盒第四天
    • 滑动关闭activity,滑动activity
    • 【搬砖】安卓入门(1)- Java开发入门,安卓java
    • 硅谷新闻9--图片三级缓存,
    • 聊聊Android 热修复Nuwa有哪些坑
    • Kotlin与Android SDK 集成(KAD 05),kotlinandroid
    • Android中的 Multiple dex files define 编译错误引发的思考
    • Android之Activity系列总结(一)--Activity概览,android--activity
    • Android官方开发文档Training系列课程中文版:数据存储之文件存储
    • Android和JavaScript相互调用的方法,androidjavascript

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有