ContentProvider実装
1.データベースのメタデータの定義
2.contentProviderを継承し、重要ないくつかの方法を書き換える
getTypeはmimeタイプのものを返す必要があり、uriのタイプによって
Uriを呼び出す内容は言うまでもない
public class BookProviderMetaData
{
public static final String AUTHORITY = "com.androidbook.provider.BookProvider";
public static final String DATABASE_NAME = "book.db";
public static final int DATABASE_VERSION = 1;
public static final String BOOKS_TABLE_NAME = "books";
private BookProviderMetaData() {}
//inner class describing columns and their types
public static final class BookTableMetaData implements BaseColumns
{
private BookTableMetaData() {}
public static final String TABLE_NAME = "books";
//uri and mime type definitions
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/books");
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.androidbook.book";
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.androidbook.book";
public static final String DEFAULT_SORT_ORDER = "modified DESC";
//Additional Columns start here.
//string type
public static final String BOOK_NAME = "name";
//string type
public static final String BOOK_ISBN = "isbn";
//string type
public static final String BOOK_AUTHOR = "author";
//Integer from System.currentTimeMillis()
public static final String CREATED_DATE = "created";
//Integer from System.currentTimeMillis()
public static final String MODIFIED_DATE = "modified";
}
}
2.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;
}
}
getTypeはmimeタイプのものを返す必要があり、uriのタイプによって
Uriを呼び出す内容は言うまでもない