Android中ContentProvider的简单使用

1、新建继承ContentProvider的类

package com.wangzhu.demo;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;

public class MyContentProvider extends ContentProvider {

    /**
     * ContentProvider的数据访问路径
     */
    public static final Uri URI = Uri.parse("content://com.wangzhu.provider");

    private SQLiteDatabase database;

    @Override
    public int delete(Uri arg0, String arg1, String[] arg2) {
        return 0;
    }

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

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        database.insert("tab", "_id", values);
        return null;
    }

    @Override
    public boolean onCreate() {
        database = getContext().openOrCreateDatabase("myProvider.db3",
                Context.MODE_PRIVATE, null);
        database.execSQL("create table IF NOT EXISTS tab(_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL)");
        return true;
    }

    @Override
    public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
            String arg4) {
        Cursor cursor = database.query("tab", null, null, null, null, null,
                null);
        return cursor;
    }

    @Override
    public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
        return 0;
    }

}

 

 

2、在AndroidManifest.xml中为应用程序添加ContentProvider的访问权限

        <!-- android:exported设置为true,表示其他应用可以访问,否则不可以访问 -->
        <provider
            android:name="MyContentProvider"
            android:authorities="com.wangzhu.provider"
            android:exported="true" >
        </provider>

3、进行插入与查询

 

        final Uri uri = MyContentProvider.URI;

    /**
     * 往Provider中写入数据
     */
    protected void write() {
        //使用getContentResolver()方法获取ContentResolver对象
        ContentResolver resolver = getContentResolver();
        ContentValues values = null;

        values = new ContentValues();
        values.put("name", "Java");
        //调用ContentResolver对象的insert方法,插入数据
        resolver.insert(uri, values);

        values = new ContentValues();
        values.put("name", "Swift");
        resolver.insert(uri, values);

        values = new ContentValues();
        values.put("name", "Python");
        resolver.insert(uri, values);

        values = new ContentValues();
        values.put("name", "C#");
        resolver.insert(uri, values);

    }

    /**
     * 读取Provider中的内容
     */
    protected void read() {
        StringBuilder accum = new StringBuilder();

        //使用getContentResolver()方法获取ContentResolver对象
        //调用ContentResolver对象的query方法,查询数据,返回Cursor对象
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        for (int i = 0, count = cursor.getCount(); i < count; i++) {
            accum.append(cursor.getString(cursor.getColumnIndex("name")))
                    .append("\n");
            cursor.moveToNext();
        }
        System.err.println("read: " + accum);
    }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。