ContentProvider组件

提供方

package com.zdsoft.zhidinote.provider;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.Nullable;

import com.zdsoft.zhidinote.datebase.DatabaseHelper;

/**
 * Created by Administrator on 2016/12/26.
 */
public class NoteProvider extends ContentProvider {
    private int result;
    private Cursor cursor;
    //成功码
    private static final int NOTES = 1;
    private static final int NOTE = 2;
    //数据库
    public DatabaseHelper databaseHelper;
    //实例化UriMatcher
    static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);

    //注册需要匹配Uri路径
    static {
        matcher.addURI("com.zdsoft.zhidinote.NOTEPROVIDER", "note/", NOTES);
        matcher.addURI("com.zdsoft.zhidinote.NOTEPROVIDER", "note/#", NOTE);
    }

    @Override
    public boolean onCreate() {
        databaseHelper = new DatabaseHelper(this.getContext());
        return false;
    }

    @Nullable
    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        //使用matcher.match(uri)方法对输入的Uri进行匹配
        int code = matcher.match(uri);
        SQLiteDatabase sqLiteDatabase = databaseHelper.getReadableDatabase();
        switch (code) {
            case 1:
                cursor = sqLiteDatabase.query("notes", null, selection, selectionArgs, null, null, null);
                return cursor;
            case 2:
                cursor = sqLiteDatabase.query("notes", null, selection, selectionArgs, null, null, null);
                return cursor;
            default:
                return null;
        }
    }

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

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues values) {
        int code = matcher.match(uri);
        SQLiteDatabase sqLiteDatabase = databaseHelper.getWritableDatabase();
        //解析uri中的id
        long id = sqLiteDatabase.insert("notes", "title", values);
        switch (code) {
            case 1:
                //在uri后面追加id
                Uri resultUri = ContentUris.withAppendedId(uri, id);
                return resultUri;
            default:
                return null;
        }

    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        int code = matcher.match(uri);
        SQLiteDatabase sqLiteDatabase = databaseHelper.getWritableDatabase();

        switch (code) {
            case 1:
                result = sqLiteDatabase.delete("notes", selection, selectionArgs);
                return result;
            default:
                return 0;
        }
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        int code = matcher.match(uri);
        SQLiteDatabase sqLiteDatabase = databaseHelper.getWritableDatabase();
        switch (code) {
            case 1:
                result = sqLiteDatabase.update("notes", values, selection, selectionArgs);
                return result;
            default:
                return 0;
        }
    }
}

添加注册provider

<provider
            android:authorities="com.zdsoft.zhidinote.NOTEPROVIDER"
            android:name=".provider.NoteProvider"
            android:exported="true"></provider>


调用方解析


package com.zdsoft.content1226;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText et_tit, et_con, et_id;
    private Button bt_insert, bt_delete, bt_update, bt_select_one, bt_select_all;

    private Uri uri;
    private int i;
    private ContentValues values;
    private Cursor cursor;
    private ContentResolver resolver;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        resolver = getContentResolver();
        initView();
        listener();
    }

    private void initView() {
        et_tit = (EditText) findViewById(R.id.et_tit);
        et_con = (EditText) findViewById(R.id.et_con);
        et_id = (EditText) findViewById(R.id.et_id);

        bt_insert = (Button) findViewById(R.id.bt_insert);
        bt_delete = (Button) findViewById(R.id.bt_delete);
        bt_update = (Button) findViewById(R.id.bt_update);
        bt_select_one = (Button) findViewById(R.id.bt_select_one);
        bt_select_all = (Button) findViewById(R.id.bt_select_all);

    }

    private void listener() {
        bt_insert.setOnClickListener(this);
        bt_delete.setOnClickListener(this);
        bt_update.setOnClickListener(this);
        bt_select_one.setOnClickListener(this);
        bt_select_all.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        String title = "";
        String content = "";
        switch (v.getId()) {
            /**
             * 添加
             */
            case R.id.bt_insert:
                uri = Uri.parse("content://com.zdsoft.zhidinote.NOTEPROVIDER/note/");
                values = new ContentValues();
                values.put("title", et_tit.getText().toString());
                values.put("content", et_con.getText().toString());
                Uri resultUri = resolver.insert(uri, values);
                Toast.makeText(MainActivity.this, ContentUris.parseId(resultUri) + "", Toast.LENGTH_SHORT).show();
                clear();
                break;
            /**
             * 根据条件id删除
             */
            case R.id.bt_delete:
                if (et_id.getText().toString().equals(null) || et_id.getText().toString().equals("")) {
                    Toast.makeText(MainActivity.this, "请输入条件", Toast.LENGTH_SHORT).show();
                    break;
                } else {
                    uri = Uri.parse("content://com.zdsoft.zhidinote.NOTEPROVIDER/note/");
                    i = resolver.delete(uri, "id=" + et_id.getText().toString(), null);
                    if (i == 1) {
                        Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
                    }
                    clear();
                    break;
                }
                /**
                 * 根据条件id修改
                 */
            case R.id.bt_update:
                if (et_id.getText().toString().equals(null) || et_id.getText().toString().equals("")) {
                    Toast.makeText(MainActivity.this, "请输入条件", Toast.LENGTH_SHORT).show();
                    break;
                } else {
                    uri = Uri.parse("content://com.zdsoft.zhidinote.NOTEPROVIDER/note/");
                    values = new ContentValues();
                    values.put("title", et_tit.getText().toString());
                    values.put("content", et_con.getText().toString());
                    i = resolver.update(uri, values, "id=" + et_id.getText().toString(), null);
                    if (i == 1) {
                        Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
                    }
                    clear();
                    break;
                }
                /**
                 * 根据条件查询单个
                 */
            case R.id.bt_select_one:
                if (et_id.getText().toString().equals(null) || et_id.getText().toString().equals("")) {
                    Toast.makeText(MainActivity.this, "请输入条件", Toast.LENGTH_SHORT).show();
                    break;
                } else {
                    uri = Uri.parse("content://com.zdsoft.zhidinote.NOTEPROVIDER/note/" + et_id.getText().toString());
                    cursor = resolver.query(uri, null, "id=" + et_id.getText().toString(), null, null);
                    if (cursor.moveToFirst()) {
                        title = cursor.getString(cursor.getColumnIndex("title"));
                        content = cursor.getString(cursor.getColumnIndex("content"));
                        Toast.makeText(MainActivity.this, title + "--" + content, Toast.LENGTH_SHORT).show();
                    }
                    clear();
                    break;
                }
                /**
                 * 根据条件查询
                 */
            case R.id.bt_select_all:
                if (et_id.getText().toString().equals(null) || et_id.getText().toString().equals("")) {
                    Toast.makeText(MainActivity.this, "请输入条件", Toast.LENGTH_SHORT).show();
                    break;
                } else {
                    uri = Uri.parse("content://com.zdsoft.zhidinote.NOTEPROVIDER/note/");
                    cursor = resolver.query(uri, null, "content like '%" + et_id.getText().toString() + "%'", null, null);
                    while (cursor.moveToNext()) {
                        title += cursor.getString(cursor.getColumnIndex("title")) + ";";
                        content += cursor.getString(cursor.getColumnIndex("content")) + ";";
                        Toast.makeText(MainActivity.this, title + "--" + content, Toast.LENGTH_SHORT).show();
                    }
                    clear();
                    break;
                }

            default:
                break;
        }

    }

    /**
     * 清空所有输入框
     */
    private void clear() {
        et_id.setText("");
        et_tit.setText("");
        et_con.setText("");
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值