这几天有些忙,要做关于访问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);
}
}
}
分享到:
相关推荐
本教程将深入探讨如何利用ContentProvider实现数据共享。 一、ContentProvider基础 1. **定义与作用**:ContentProvider是一个接口,应用程序通过实现这个接口来提供对外的数据服务。它封装了数据访问逻辑,使得...
本示例通过ContentProvider实现了对SQLite数据库的增删改查(CRUD)操作,展示了如何利用ContentProvider来增强应用的数据管理功能和扩展性。 首先,理解ContentProvider的基本结构至关重要。ContentProvider是一个...
下面我们将深入探讨如何通过ContentProvider实现数据库的访问以及如何自定义组件来展示这些数据。 一、ContentProvider基础 1.1 创建ContentProvider 首先,我们需要创建一个继承自`android.content....
在Android系统中,ContentProvider是一种重要的组件,它允许应用程序之间共享数据,实现了进程间通信(IPC,Inter-...通过学习和实践这个简单的Demo,你将能够熟练地在你的应用中运用ContentProvider实现高效的IPC。
本教程将深入探讨如何利用Broadcast和ContentProvider实现两个apk之间的通信以及ContentProvider对数据库变更的监听。 首先,我们来理解Broadcast(广播)的概念。Broadcast是Android系统中一种全局的通知机制,...
疯狂android资料:第九章使用ContentProvider实现数据共享.doc
本篇文章将深入探讨如何通过ContentProvider实现IPC,以及相关的核心知识点。 首先,理解ContentProvider的结构与作用至关重要。ContentProvider是一个抽象类,它实现了数据存储和检索的接口。每个ContentProvider...
在"ContentProvider-master"项目中,我们可以期待看到一个完整的ContentProvider实现,包括上述所有步骤的代码示例。这将帮助开发者理解如何在自己的应用中创建和使用ContentProvider,实现跨应用的数据共享。此外,...
资源中包含自定义ContentProvider的相关实现的代码(Homework02ContentProvider),以及对应的测试代码(Homework02Test)。 其中任务01生词本作业的相关代码请参照链接:...
本文将深入探讨如何通过`ContentProvider`实现SQLite数据库的共享,以便于不同应用之间能有效访问同一数据库资源。 一、ContentProvider概述 `ContentProvider`是Android四大组件之一,它的主要作用是提供一个统一...
ContentProvider的实现主要包括以下步骤: 1. **创建ContentProvider类**:首先,你需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`、`query()`、`insert()`、`update()`和`...
- `ContentProviderDemo1`:展示基础的ContentProvider实现,包括单表操作。 - `ContentProviderDemo2`:演示如何在一个项目中创建并使用两个ContentProvider,每个ContentProvider管理不同类型的数据。 - `...
TestCP可能是本次讲解的一个实践示例或者测试用例,它可能包含了一个简单的ContentProvider实现和相关的测试代码,帮助开发者理解和掌握ContentProvider与Uri的使用。 总结起来,Android的ContentProvider和Uri是...
- 提供的源码 `demo` 可能包含了一个完整的ContentProvider实现,通过阅读源码,我们可以看到如何处理数据请求、如何与数据库交互,以及如何定制ContentProvider的行为。 - 分析源码有助于开发者深入理解...
在这个简单的例子中,我们将探讨如何自定义ContentProvider来实现数据共享。 首先,创建一个ContentProvider需要继承`android.content.ContentProvider`类,并重写其中的关键方法: 1. `onCreate()`: 当...
6. **ContentProviderDemo**: 这个文件很可能是示例中的ContentProvider实现,包含上述提到的UriMatcher配置、ContentProvider子类的代码以及SQLite数据库的管理。 7. **ContentProviderClient**: 这个文件可能是一...