- Android内容提供者源码,我不想说多,只讲一些实用的代码,增删改查。通过contentProvider向数据进行操作。大家可以下载,通过日志与LogCat打印出来的信息作为参考!
-
- package com.smart;
-
-
- import android.app.Activity;
- import android.content.ContentResolver;
- import android.content.ContentValues;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.Bundle;
- import android.provider.ContactsContract;
- import android.util.Log;
-
- public class ContentProvider extends Activity {
- private static final String TAG = "ContentProvider";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- ContentResolver contentResolver = this.getContentResolver();
- Uri alluri = Uri.parse("content://com.smart.provider.personprovider/person");
-
- ContentValues values = new ContentValues();
- values.put("name", "smart99");
- values.put("age", (short)44);
-
-
- Uri uri = Uri.parse("content://com.smart.provider.personprovider/person/5");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- contactMethod();
- }
-
- public void contactMethod(){
-
- ContentResolver contentResolver = this.getContentResolver();
- Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
-
- while (cursor.moveToNext()) {
-
- int contactId=cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID));
- String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
- Log.i(TAG,"contactId=" + contactId + ",name="
- + name);
-
-
- Cursor phones=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
- null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactId, null, null);
- StringBuffer sb=new StringBuffer();
- while(phones.moveToNext()){
- String phoneNumber=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
- sb.append(phoneNumber).append(",");
-
- }
-
- Log.i(TAG, sb.toString());
-
- }
-
- cursor.close();
-
- }
-
-
- }
-
-
-
-
-
- package com.smart.dh;
-
- import android.content.ContentProvider;
- import android.content.ContentUris;
- import android.content.ContentValues;
- import android.content.UriMatcher;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.net.Uri;
- import android.text.TextUtils;
-
- import com.smart.service.DataBaseOpenHelper;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public class PersonContentProvider extends ContentProvider {
-
-
- private DataBaseOpenHelper dbOpenHelper;
- private static final int ALLPERSON = 1;
- private static final int PERSON = 2;
- private static UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
- static {
-
- sMatcher.addURI("com.smart.provider.personprovider", "person",ALLPERSON);
-
- sMatcher.addURI("com.smart.provider.personprovider", "person/#", PERSON);
- }
-
- @Override
- public int delete(Uri uri, String selection, String[] selectionArgs) {
- SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
- int count = 0;
- switch (sMatcher.match(uri)) {
- case ALLPERSON:
- count = db.delete("person", selection, selectionArgs);
- break;
- case PERSON:
- long personid = ContentUris.parseId(uri);
- String where = TextUtils.isEmpty(selection) ? "personid=?"
- : selection + " and personid=?";
- String[] params = new String[] { String.valueOf(personid) };
- if (!TextUtils.isEmpty(selection) && selectionArgs != null) {
- params = new String[selectionArgs.length + 1];
- for (int i = 0; i < selectionArgs.length; i++) {
- params[i] = selectionArgs[i];
- }
- params[selectionArgs.length + 1] = String.valueOf(personid);
- }
- count = db.delete("person", where, params);
- break;
- default:
- throw new IllegalArgumentException("Unkow Uri:" + uri);
- }
- return count;
- }
-
-
-
-
-
-
-
-
-
-
-
- @Override
- public String getType(Uri uri) {
- switch (sMatcher.match(uri)) {
- case ALLPERSON:
-
- return "vnd.android.cursor.dir/personprovider.person";
- case PERSON:
-
-
- return "vnd.android.cursor.item/personprovider.person";
- default:
- throw new IllegalArgumentException("Unkow Uri:" + uri);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @Override
- public Uri insert(Uri uri, ContentValues values) {
-
- SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
- long id = 0;
-
- switch (sMatcher.match(uri)) {
- case ALLPERSON:
-
- id = db.insert("person", "name", values);
- return ContentUris.withAppendedId(uri, id);
-
- case PERSON:
-
- db.insert("person", "name", values);
- String path = uri.toString();
-
- return Uri.parse(path.substring(0, path.lastIndexOf('/')) + id);
- default:
-
- throw new IllegalArgumentException("Unkow Uri:" + uri);
- }
-
- }
-
-
-
- @Override
- public boolean onCreate() {
- dbOpenHelper = new DataBaseOpenHelper(this.getContext());
- return true;
- }
-
- @Override
- public Cursor query(Uri uri, String[] projection, String selection,
- String[] selectionArgs, String sortOrder) {
- SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
- switch (sMatcher.match(uri)) {
- case ALLPERSON:
- return db.query("person", projection, selection, selectionArgs,null,null,sortOrder);
- case PERSON:
- long personid = ContentUris.parseId(uri);
- String where = TextUtils.isEmpty(selection) ? "personid=?"
- : selection + " and personid=?";
- String[] params = new String[] { String.valueOf(personid) };
- if (!TextUtils.isEmpty(selection) && selectionArgs != null) {
- params = new String[selectionArgs.length + 1];
- for (int i = 0; i < selectionArgs.length; i++) {
- params[i] = selectionArgs[i];
- }
- params[selectionArgs.length + 1] = String.valueOf(personid);
- }
- return db.query("person", projection, where, params,null,null,sortOrder);
- default:
- throw new IllegalArgumentException("Unkow Uri:" + uri);
- }
-
- }
-
- @Override
- public int update(Uri uri, ContentValues values, String selection,
- String[] selectionArgs) {
- SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
- int count = 0;
- switch (sMatcher.match(uri)) {
- case ALLPERSON:
- count = db.update("person", values, selection, selectionArgs);
- break;
- case PERSON:
- long personid = ContentUris.parseId(uri);
-
- String where = TextUtils.isEmpty(selection) ? "personid=?"
- : selection + " and personid=?";
- String[] params = new String[] { String.valueOf(personid) };
- if (!TextUtils.isEmpty(selection) && selectionArgs != null) {
- params = new String[selectionArgs.length + 1];
- for (int i = 0; i < selectionArgs.length; i++) {
- params[i] = selectionArgs[i];
- }
- params[selectionArgs.length + 1] = String.valueOf(personid);
- }
- count = db.update("person", values, where, params);
- break;
- default:
- throw new IllegalArgumentException("Unkow Uri:" + uri);
- }
- return count;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
-
-
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.smart.dh"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <uses-library android:name="android.test.runner"/>
- <provider android:name=".PersonContentProvider"
- android:authorities="com.smart.provider.personprovider"
- android:permission="com.smart.provider.personprovider"/>
-
- <activity android:name=".DBActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- </application>
- <uses-sdk android:minSdkVersion="8" />
- <instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.smart.dh" android:label="Tests for My App"/>
- </manifest>
-
-
-
-
-
-
- <!-- android:permission="cn.itcast.provider.personprovider"
- 这行是指权限 android:permission="com.smart.domain"
- com.smart.domain
- -->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
大家记住了,两个工程,一定都导进来,然后运行。
本文转自 llb988 51CTO博客,原文链接:http://blog.51cto.com/llb988/518956,如需转载请自行联系原作者