提供方
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("");
}
}