android ContentProvider

原创 2012年03月23日 19:07:13

1

package com.android.test.broadcast;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;

public class MyContentProvider extends ContentProvider{

  private SQLiteDatabase mySqlDB;
  private DatabaseHelper mDBHelpler;
  private static final String DATABASE_NAME = "Users.db";
  private static final int DATABASE_VERSION = 1;
  private static final String TABLE_NAME = "contcats";
  private static final String TAG ="MyContentProvider";

  private static class DatabaseHelper extends SQLiteOpenHelper {
  DatabaseHelper(Context context) {
  super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("Create table " + TABLE_NAME + "( _id INTEGER PRIMARY KEY AUTOINCREMENT, CONTACTS_NAME TEXT,CONTACTS_SEX TEXT,CONTACTS_AGE INTEGER);");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
  onCreate(db);
  }
  }

  @Override
  public int delete(Uri uri, String s, String[] as) {
  return 0;
  }

  @Override
  public String getType(Uri uri) {
  return null;
  }

  @Override
  public Uri insert(Uri uri, ContentValues contentvalues) {
   mySqlDB = mDBHelpler.getWritableDatabase();
  long rowId = mySqlDB.insert(TABLE_NAME, "", contentvalues);
  if (rowId > 0) {
  Uri rowUri = ContentUris.appendId(Users.User.ContentUri.buildUpon(), rowId).build();
  getContext().getContentResolver().notifyChange(rowUri, null);
  return rowUri;
  }
  throw new SQLException("Failed to insert row into " + uri);
  }

  @Override
  public boolean onCreate() {
   mDBHelpler = new DatabaseHelper(getContext());
  return (mDBHelpler == null) ? false : true;
  }

  @Override
  public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
  SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
  SQLiteDatabase db = mDBHelpler.getReadableDatabase();
  qb.setTables(TABLE_NAME);
  Cursor c = qb.query(db, projection, selection, null, null, null, sortOrder);
  c.setNotificationUri(getContext().getContentResolver(), uri);
  return c;
  }

  @Override
  public int update(Uri uri, ContentValues contentvalues, String s, String[] as) {
  return 0;
  }

}

22222222222222222222

package com.android.test.broadcast;

import android.net.Uri;
import android.provider.BaseColumns;

public class Users {
 
 public static String user="user";
 public static final String author="com.android.test.broadcast";
 public static final class User implements BaseColumns {
  public static final  Uri ContentUri=Uri.parse("content://com.android.test.broadcast");
  public static final String USER_NAME="user";
 }

}

3333333333333333333333333

<provider android:name="com.android.test.broadcast.MyContentProvider" android:authorities="com.android.test.broadcast"></provider>

 

ContentValues values=new ContentValues();
  values.put("_id", 1);
  values.put("CONTACTS_AGE",21);
  values.put("CONTACTS_SEX", "0");
  values.put("CONTACTS_NAME","hello");
  mContext.getContentResolver().insert(Uri.parse("content://com.android.test.broadcast"), values);
  
  ContentValues values1=new ContentValues();
  values1.put("_id", 2);
  values1.put("CONTACTS_AGE",22);//CONTACTS_AGE
  values1.put("CONTACTS_SEX", "1");//CONTACTS_SEX
  values1.put("CONTACTS_NAME","test");//CONTACTS_NAME
  mContext.getContentResolver().insert(Uri.parse("content://com.android.test.broadcast"), values1);
  
  Cursor myCursor=mContext.getContentResolver().query(Uri.parse("content://com.android.test.broadcast"),null, null,null,null);
  Log.i("============","=========="+myCursor.getCount());

Android 进阶11:进程通信之 ContentProvider 内容提供者

学习启舰大神,每篇文章写一句励志的话,与大家共勉。When you are content to be simply yourself and don’t compare or compete, ev...
  • u011240877
  • u011240877
  • 2017年06月02日 23:24
  • 3318

Android ContentProvider query参数

Android ContentProvider query参数
  • myfwjy
  • myfwjy
  • 2016年07月11日 16:17
  • 1792

Android ContentProvider封装数据库和文件读写总结

本文是我各处东拼西凑加上自己实践的一个ContentProvider使用总结,留做后用,主要介绍ContentProvider的集成方法。 一、综述 ContentProvider是Android四...
  • u013478336
  • u013478336
  • 2016年02月23日 12:04
  • 1626

Android IPC机制(四)用ContentProvider进行进程间通信

ContentProvider为存储和获取数据提供统一的接口,它可以在不同的应用程序之间共享数据,本身就是适合进程间通信的。ContentProvider底层实现也是Binder,但是使用起来比AID...
  • itachi85
  • itachi85
  • 2016年01月29日 17:00
  • 5995

Android ContentProvider 完全解析及简单DEMO

Android应用程序运行在不同的进程空间中,因此不同应用程序的数据是不能够直接访问的。为了增强程序之间的数据共享能力,Android系统提供了像SharedPreferences这类简单的跨越程序边...
  • yhaolpz
  • yhaolpz
  • 2016年05月03日 14:48
  • 14195

Android之通过ContentProvider共享文件

使用ContentProvider共享文件时,一定要重写openFile方法,否则会报异常。 如: public class ContentProviderDemo extends Content...
  • zhangyongfeiyong
  • zhangyongfeiyong
  • 2016年07月08日 11:09
  • 745

Android四大组件——ContentProvider的增删改查和优化

前言ContentProvider步骤:创数据库,写规则匹配,配置manifests,另一个应用使用其实ContentProvider就是:在一个匹配器中写入自己写好的匹配规则,并对外提供写好的匹配规...
  • qq_30379689
  • qq_30379689
  • 2016年08月05日 15:53
  • 1930

对ContentProvider中getType方法的一点理解

在上篇博客中我们介绍了自定义ContentProvider,但是遗漏掉了一个方法,那就是getType,自定义ContentProvider一般用不上getType方法,但我们还是一起来探究下这个方法...
  • u012702547
  • u012702547
  • 2015年12月06日 13:14
  • 3484

深入理解ContentProvider共享数据更新通知机制

ContentProvider的共享数据更新通知机制 ContentObserver
  • hehe26
  • hehe26
  • 2016年07月12日 20:17
  • 3671

Android中使用ContentProvider进行跨进程方法调用

原文同时发表在我的博客 点我进入还能看到更多需求背景最近接到这样一个需求,需要和别的 App 进行联动交互,比如下载器 App 和桌面 App 进行联动,桌面的 App 能直接显示下载器 App 内...
  • cnzx219
  • cnzx219
  • 2015年06月26日 08:30
  • 2004
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android ContentProvider
举报原因:
原因补充:

(最多只允许输入30个字)