ContentProvider 被访问的(一)

提供数据被访问的一方。

public class WordProvider extends ContentProvider {

    private UriMatcher matcher;

    private static final int MATCH_ROOT = 1;
    private static final int MATCH_HELLO = 2;

    @Override
    public boolean onCreate() {
        // 当本ContentProvider被创建时回调

        // 第一步,创建UriMatcher对象
        matcher = new UriMatcher(UriMatcher.NO_MATCH);
        // 第二步,添加匹配的URI,并指定匹配时的返回值
        //MATCH_ROOT   MATCH_HELLO  就是返回值
        matcher.addURI("cn.teee.providers.word", null, MATCH_ROOT);
        matcher.addURI("cn.teee.providers.word", "hello", MATCH_HELLO);

        return false;
    }

    // content://cn.teee.providers.word
    // content://cn.teee.providers.word/hello

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        // 当其它应用查询数据时回调
        //第三步,与已经注册的URI进行匹配
        switch (matcher.match(uri)) {
        //根据返回值做判断
        case MATCH_ROOT:
            DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());
            SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
            Cursor c = db.query("word", projection, selection, selectionArgs, null, null, sortOrder);
            return c;

        default:
            throw new RuntimeException("非法的Uri -> " + uri);
        }
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // 当其它应用添加数据时回调

        // 验证Uri
        //第三步,与已经注册的URI进行匹配
        int code = matcher.match(uri);
        Log.d("teee", "uri -> " + uri.toString());
        switch (code) {
        //根据返回值做判断
        case MATCH_ROOT:
            Log.d("teee", "MATCH_ROOT");
            DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());
            SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
            long id = db.insert("word", null, values);
            if (db.isOpen()) {
                db.close();
                db = null;
            }
            // content://cn.teee.providers.word/13
            return ContentUris.withAppendedId(uri, id);

        case MATCH_HELLO:
            Log.d("teee", "MATCH_HELLO");
            throw new RuntimeException("非法的Uri:" + uri);

        case UriMatcher.NO_MATCH:
            Log.d("teee", "NO_MATCH");
            throw new RuntimeException("非法的Uri:" + uri);
        }

        return null;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        // 当其它应用删除数据时回调
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
            String[] selectionArgs) {
        // 当其它应用修改数据时回调
        // -- 假设不提供修改数据的服务 --
        throw new RuntimeException("不允许修改数据!!!");
    }

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

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值