`
yangzc106
  • 浏览: 156386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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;
	
	@Override
	public boolean onCreate() {
		helper = new SqLHelper(this.getContext());
		return false;
	}

	@Override
	public 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);
	}

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

	@Override
	public 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;
	}

	@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;
	}

}

 

 

第二部:在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);
        }
    }
}

 

0
0
分享到:
评论

相关推荐

    ContentProvider实现数据共享

    本教程将深入探讨如何利用ContentProvider实现数据共享。 一、ContentProvider基础 1. **定义与作用**:ContentProvider是一个接口,应用程序通过实现这个接口来提供对外的数据服务。它封装了数据访问逻辑,使得...

    ContentProvider实现数据库操作

    本示例通过ContentProvider实现了对SQLite数据库的增删改查(CRUD)操作,展示了如何利用ContentProvider来增强应用的数据管理功能和扩展性。 首先,理解ContentProvider的基本结构至关重要。ContentProvider是一个...

    contentprovider实现数据库访问

    下面我们将深入探讨如何通过ContentProvider实现数据库的访问以及如何自定义组件来展示这些数据。 一、ContentProvider基础 1.1 创建ContentProvider 首先,我们需要创建一个继承自`android.content....

    ContentProvider实现IPC的简单Demo

    在Android系统中,ContentProvider是一种重要的组件,它允许应用程序之间共享数据,实现了进程间通信(IPC,Inter-...通过学习和实践这个简单的Demo,你将能够熟练地在你的应用中运用ContentProvider实现高效的IPC。

    两个apk之间广播互相通信及ContentProvider监听数据库的变换

    本教程将深入探讨如何利用Broadcast和ContentProvider实现两个apk之间的通信以及ContentProvider对数据库变更的监听。 首先,我们来理解Broadcast(广播)的概念。Broadcast是Android系统中一种全局的通知机制,...

    疯狂android资料:第九章使用ContentProvider实现数据共享.doc

    疯狂android资料:第九章使用ContentProvider实现数据共享.doc

    IPC之使用ContentProvider进程间通信

    本篇文章将深入探讨如何通过ContentProvider实现IPC,以及相关的核心知识点。 首先,理解ContentProvider的结构与作用至关重要。ContentProvider是一个抽象类,它实现了数据存储和检索的接口。每个ContentProvider...

    ContentProvider服务端

    在"ContentProvider-master"项目中,我们可以期待看到一个完整的ContentProvider实现,包括上述所有步骤的代码示例。这将帮助开发者理解如何在自己的应用中创建和使用ContentProvider,实现跨应用的数据共享。此外,...

    Android实现使用自定义ContentProvider共享生词本数据库

    资源中包含自定义ContentProvider的相关实现的代码(Homework02ContentProvider),以及对应的测试代码(Homework02Test)。 其中任务01生词本作业的相关代码请参照链接:...

    android 通过ContentProvider实现sqlite数据库共享

    本文将深入探讨如何通过`ContentProvider`实现SQLite数据库的共享,以便于不同应用之间能有效访问同一数据库资源。 一、ContentProvider概述 `ContentProvider`是Android四大组件之一,它的主要作用是提供一个统一...

    contentprovider

    ContentProvider的实现主要包括以下步骤: 1. **创建ContentProvider类**:首先,你需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`、`query()`、`insert()`、`update()`和`...

    ContentProvider使用方法demo

    - `ContentProviderDemo1`:展示基础的ContentProvider实现,包括单表操作。 - `ContentProviderDemo2`:演示如何在一个项目中创建并使用两个ContentProvider,每个ContentProvider管理不同类型的数据。 - `...

    androdi ContentProvider和Uri详解

    TestCP可能是本次讲解的一个实践示例或者测试用例,它可能包含了一个简单的ContentProvider实现和相关的测试代码,帮助开发者理解和掌握ContentProvider与Uri的使用。 总结起来,Android的ContentProvider和Uri是...

    ContentProvider 实战源码以及apk

    - 提供的源码 `demo` 可能包含了一个完整的ContentProvider实现,通过阅读源码,我们可以看到如何处理数据请求、如何与数据库交互,以及如何定制ContentProvider的行为。 - 分析源码有助于开发者深入理解...

    自定义ContentProvider的简单例子

    在这个简单的例子中,我们将探讨如何自定义ContentProvider来实现数据共享。 首先,创建一个ContentProvider需要继承`android.content.ContentProvider`类,并重写其中的关键方法: 1. `onCreate()`: 当...

    Android中ContentProvider的示例

    6. **ContentProviderDemo**: 这个文件很可能是示例中的ContentProvider实现,包含上述提到的UriMatcher配置、ContentProvider子类的代码以及SQLite数据库的管理。 7. **ContentProviderClient**: 这个文件可能是一...

Global site tag (gtag.js) - Google Analytics