ContentProvider
2016-05-17 09:10
525 查看
ContentProvider简单使用事例
AndroidManifest配置
<!-- authorities 主机名 --> <provider android:name="com.glinkus.icare.contentProvider.ContactProvider" android:authorities="com.android.glinkus.icare.ContactProvider" > </provider>
自定义ContentProvider
package com.glinkus.icare.contentProvider; import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import com.glinkus.icare.db.DBHelper; /** * <p>Title:ContactProvider</p> * <p>Description: </p> * @author syz * @date 2015-12-23 */ public class ContactProvider extends ContentProvider { private static final String CONTENT_AUTHORITY = "com.android.glinkus.icare.ContactProvider"; private static final String BASE_CONTENT_URL ="content://"+CONTENT_AUTHORITY+"/"; private static final Uri QUERY_CONTACT_NAME_URL = Uri.parse(BASE_CONTENT_URL+"contact"); private DBHelper helper; private SQLiteDatabase db; private static UriMatcher uriMatcher; static{ uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.match(QUERY_CONTACT_NAME_URL); } @Override public boolean onCreate() { helper = new DBHelper(getContext()); return helper != null ?true:false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { db = helper.getReadableDatabase(); Cursor cursor = db.query("tb_contact", null, "call_id = ?", selectionArgs, null, null, null); return cursor; } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; } }
调用
String imageUrl = null; String query_uri = "content://com.android.glinkus.icare.ContactProvider/contact"; Uri uri = Uri.parse(query_uri); Cursor cursor = getContentResolver().query(uri, null, null, new String[] { callNumber }, null); if (cursor != null && cursor.getCount() > 0) { cursor.moveToFirst(); String nickName = cursor.getString(cursor.getColumnIndex("name")); if (!TextUtils.isEmpty(nickName)) { this.nickName = nickName; } else { // this.nickName = getString(R.string.unknown); } nameTextView.setText(nickName); if (cursor != null) { cursor.close(); } } return imageUrl;
相关文章推荐
- 国家授时中心NTP服务器IP地址
- Yii2如何批量添加数据
- [转]浏览器退出之后php还会继续执行么?
- 解决phpStudy中 phpmyadmin #2002 无法登录 MySQL 服务器
- 黄永成-thinkphp讲解-个人博客讲解25集
- php学习笔记——简单计算器脚本
- 2016/05/17 thinkphp3.2.2 分页的使用:①在Home下设置Publics文件夹或在thinkPHP下library的vender 把page.class.php 考贝进入 ②通过new 实例化方式调用 $page=new \Home\Publics\Page($total,3);
- Yii2如何批量添加数据
- 深入剖析浏览器退出之后php还会继续执行么
- 简单理解PHP的面向对象编程方式
- 完美解决phpdoc导出文档中@package的warning及Error的错误
- php关闭warning问题的解决方法
- 浅析php静态方法与非静态方法的用法区别
- PHP基本知识
- CVE-2016-3078 PHP zip module command excute
- yii2批量添加的问题
- PHP编译安装时常见错误解决办法
- php-fpm 的安装与LNMP测试
- PHP IDE phpstorm 常用快捷键
- 客户端调用axis2服务端时报的错:Deserializing parameter 'getPersonReturn': could not find deserializer for type {