内容提供者主要是提供接口给第三方应用调用,增删改查。
package com.miquan.demo;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
public class MyContentProvider extends ContentProvider {
// 定义一个匹配器
private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
private static final int MATCH_WORDS = 1;// 匹配为所有word
private static final int MATCH_WORD = 2;// 匹配某一个word
static {
MATCHER.addURI("com.miquan.myprovider", "word", MATCH_WORDS);
// #代表数字,*代表所有字符
MATCHER.addURI("com.miquan.myprovider", "word/#", MATCH_WORD);
}
public MyContentProvider() {
}
@Override
public boolean onCreate() {
return false;
}
@Override
public String getType(Uri uri) {
// 需要获取数据类型的时候,实现这个方法
switch (MATCHER.match(uri)) {
case MATCH_WORDS:
// 得到的是一个集合,前部分是android固定的写法
return "vnd.android.cursor.dir/word";
case MATCH_WORD:
// 得到的是一个item
return "vnd.android.cursor.item/word";
default: {
// 不匹配
throw new IllegalArgumentException("Uri 不匹配 :" + uri);
}
}
}
@Override
public Uri insert(Uri uri, ContentValues values) {
switch (MATCHER.match(uri)) {
case MATCH_WORDS:
String word = values.getAsString("word");
// 这里已经获取到传过来的数据了,在进行保存就行。
return ContentUris.withAppendedId(uri, 1);
default: {
// 不匹配
throw new IllegalArgumentException("Uri 不匹配 :" + uri);
}
}
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
switch (MATCHER.match(uri)) {
case MATCH_WORDS:
// 删除所有记录
return 0;
case MATCH_WORD:
// 删除某一条记录
return 0;
default: {
// 不匹配
throw new IllegalArgumentException("Uri 不匹配 :" + uri);
}
}
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
throw new UnsupportedOperationException("Not yet implemented");
}
}
<provider
android:name=".MyContentProvider"
android:authorities="com.miquan.myprovider"
android:enabled="true"
android:exported="true" >
</provider>
Uri uri = Uri.parse("content://com.miquan.myprovider/word");
ContentResolver resolver = getContentResolver();
ContentValues values = new ContentValues();
values.put("word", "无忌船长");
resolver.insert(uri, values);
收工。
原文地址:http://blog.csdn.net/qiantujava/article/details/45959621