ContentProvider的URI配置及使用,实现数据库的跨应用读取

来源:互联网 发布:盾太捏脸数据 编辑:程序博客网 时间:2024/04/29 13:50

mainfest.xml:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.itcast.other"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="8" />    <instrumentation        android:label="Tests for My App"        android:name="android.test.InstrumentationTestRunner"        android:targetPackage="cn.itcast.other" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >                <uses-library android:name="android.test.runner" />        <activity            android:label="@string/app_name"            android:name=".OtherActivity" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>



TestContentProvider.java


package cn.itcast.other;import android.content.ContentResolver;import android.content.ContentValues;import android.net.Uri;import android.test.AndroidTestCase;public class TestContentProvider extends AndroidTestCase {public void testResolverInsert() throws Exception{ContentResolver resolver = getContext().getContentResolver();Uri uri = Uri.parse("content://cn.itcast.db.personprovider/insert");ContentValues values = new ContentValues();values.put("name", "laofang");values.put("age", 18);resolver.insert(uri, values);}public void testResolverDelete() throws Exception{ContentResolver resolver = getContext().getContentResolver();Uri uri = Uri.parse("content://cn.itcast.db.personprovider/delete");int raw = resolver.delete(uri, "name=?", new String[]{"zhangsan94"});System.out.println("删除了 "+raw+"行" );}public void testResolverUpdate() throws Exception{ContentResolver resolver = getContext().getContentResolver();Uri uri = Uri.parse("content://cn.itcast.db.personprovider/update");ContentValues values = new ContentValues();values.put("name", "laoli");values.put("age", 28);int raw  = resolver.update(uri, values, "name=?", new String[]{"lisi"});System.out.println("更新了 "+raw+"行" );}}

otherActivity.java


package cn.itcast.other;import android.app.Activity;import android.content.ContentResolver;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.os.Handler;public class OtherActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                ContentResolver  resolver =  getContentResolver();        Uri uri = Uri.parse("content://cn.itcast.db.personprovider/");        //        Cursor cursor = resolver.query(uri, null, null, null, null);//        while (cursor!=null&& cursor.moveToNext()){//        String name = cursor.getString( cursor.getColumnIndex("name"));//        int age = cursor.getInt(cursor.getColumnIndex("age"));//        System.out.println("姓名 "+ name +" 年龄 "+ age);//        }               //  content://cn.itcast.db.personprovider        // 注册了一个内容观察者         getContentResolver().registerContentObserver(uri, true , new MyObserver(new Handler()));    }            public class MyObserver extends ContentObserver{public MyObserver(Handler handler) {super(handler);}/** * 当内容观察者发现了数据发生改变的时候 调用的方法  */@Overridepublic void onChange(boolean selfChange) {System.out.println("数据发生改变了 ");super.onChange(selfChange);}        }}


原创粉丝点击