首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

ContentProvider的兑现

2012-09-29 
ContentProvider的实现这几天有些忙,要做关于访问exchange服务器的技术调研,环境总出问题。微软的东西还真

ContentProvider的实现

这几天有些忙,要做关于访问exchange服务器的技术调研,环境总出问题。微软的东西还真复杂!看了看android2.2的源码,本来想写点东西,但想想也没什么好写的。主要是关于软键盘事件的传递,网上有很多这方面的文章。今天看了看contentprovider,就写点这方面的东西吧。

?

android为我们提供了ContentProvider来实现数据的共享,一个程序如果想让别的程序可以操作自己的数据,就定义自己的ContentProvider。今天就简单介绍一它的实现方法。换肤可能会用到。

?

第一步:继承ContentProvider,代码如下:

package com.test.android.skin.main;import java.util.List;import android.content.ContentProvider;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.net.Uri;import android.util.Log;public class Provider extends ContentProvider{private SQLiteOpenHelper helper;@Overridepublic boolean onCreate() {helper = new SqLHelper(this.getContext());return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {List<String> paths = uri.getPathSegments();String tableName = paths.get(0);SQLiteDatabase db = helper.getReadableDatabase();return db.query(tableName, null, null, null, null, null, null);}@Overridepublic String getType(Uri uri) {return null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {List<String> paths = uri.getPathSegments();String tableName = paths.get(0);Log.d("Tag",tableName + ":::"+uri.toString());SQLiteDatabase db = helper.getWritableDatabase();db.insert(tableName, null, values);return uri;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {return 0;}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {return 0;}}

?

?

第二部:在AndroidManifest.xml添加provider

<provider android:authorities="com.test.android.skin.main.provider" android:name="Provider"></provider>

?

以上就做完一个provider了。

?

使用方式:

package com.test.android.skin.myskin;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.util.Log;public class MainActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                ContentResolver resolver = this.getContentResolver();        Uri url = Uri.parse("content://com.test.android.skin.main.provider/skinTab");        ContentValues values = new ContentValues();        values.put("id", "40");        values.put("packname", "org.yangzc.package40");        resolver.insert(url, values);        Uri queryurl = Uri.parse("content://com.test.android.skin.main.provider/skinTab");        Cursor c = resolver.query(queryurl, null, null, null, null);        while(c.moveToNext()){        String id = c.getString(c.getColumnIndex("id"));        String packname = c.getString(c.getColumnIndex("packname"));        Log.d("Tag", "Id:"+id + "   packname:" + packname);        }    }}

?

热点排行