您的位置:首页 > 移动开发 > Android开发

android开发第六天ContentProvider数据共享

2013-03-21 18:41 399 查看
provider

public class provider extends ContentProvider {
    public final String TAG="provider";
    /**
     * 这个要和manifest.xml中的一致
     */
    public static final String AUTHORITY = "com.nanguabing.contentprovider.myprovider";
    private static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
    static {
        try {
            matcher.addURI(AUTHORITY, "insert", 1);
            matcher.addURI(AUTHORITY, "delete/#", 2);
            matcher.addURI(AUTHORITY, "update/#", 3);
            matcher.addURI(AUTHORITY, "query/#", 4);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    CRUD mCRUD;

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

    /**
     * 查询操作
     */
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        int code = matcher.match(uri);
        if (code == 4) {
        return mCRUD.findAll();
        }
        return null;
    }

    @Override
    public String getType(Uri uri) {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * 插入操作
     */
    public Uri insert(Uri uri, ContentValues values) {
        // uri=content://com.nanguabing.contentprovider.myprovider/insert
        int code = matcher.match(uri);
        long id = -1;
        if (code == 1) {
            mCRUD.insert(values.getAsString("name"),values.getAsInteger("age"));
            id=1;
        } else {
            Log.i(TAG, "this uri is invalid for insert!");
        }
        return ContentUris.withAppendedId(uri, id);
    }

    /**
     * 删除操作
     */
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        //delete:uri=content://cn.itcast.provider.customerprovider/delete/10
        int code = matcher.match(uri);
        if(code == 2){
            mCRUD.delete((int) ContentUris.parseId(uri));
        }
        else{
            Log.i(TAG, "this uri is invalid for delete!");
        }
        return 0;
    }

    /**
     * 修改操作
     */
    public int update(Uri uri, ContentValues values, String selection,
            String[] selectionArgs) {
        //update:uri=content://cn.itcast.provider.customerprovider/update/10
        int code = matcher.match(uri);
        if(code == 3){
            mCRUD.update(values.getAsString("name"),values.getAsInteger("age"),values.getAsInteger("id"));
        }
        else{
            Log.i(TAG, "this uri is invalid for update!");
        }
        return 0;
    }

}


mainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nanguabing.contentprovider"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.nanguabing.contentprovider.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider android:name="com.nanguabing.contentprovider.provider"
                android:authorities="com.nanguabing.contentprovider.myprovider"/>
    </application>

</manifest>


activity

public class MainActivity extends Activity {
    String uri = "";
    TextView mTV;
    EditText mID, mName, mAge;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTV = (TextView) findViewById(R.id.textView1);
        mID = (EditText) findViewById(R.id.editText1);
        mName = (EditText) findViewById(R.id.editText2);
        mAge = (EditText) findViewById(R.id.editText3);
    }

    public void onClick(View v) {
        ContentResolver cr = this.getContentResolver();
        ContentValues values = new ContentValues();
        switch (v.getId()) {
        case R.id.button1:
            uri = "content://com.nanguabing.contentprovider.myprovider/insert";
            values.put("name", mName.getText().toString());
            values.put("age", Integer.parseInt(mAge.getText().toString()));
            cr.insert(Uri.parse(uri), values);
            break;
        case R.id.button2:
            uri = "content://com.nanguabing.contentprovider.myprovider/delete/"
                    + mID.getText().toString();
            cr.delete(Uri.parse(uri), null, null);
            break;
        case R.id.button3:
            uri = "content://com.nanguabing.contentprovider.myprovider/update/"
                    + mID.getText().toString();
            values.put("id", Integer.parseInt(mID.getText().toString()));
            values.put("name", mName.getText().toString());
            values.put("age", Integer.parseInt(mAge.getText().toString()));
            cr.update(Uri.parse(uri), values, null, null);
            break;
        case R.id.button4:
            uri = "content://com.nanguabing.contentprovider.myprovider/query/1";
            Cursor cur = cr.query(Uri.parse(uri), null, null, null, null);
            String txt = "";
            while (cur.moveToNext()) {
                txt += cur.getInt(cur.getColumnIndex("id"))
                        + cur.getString(cur.getColumnIndex("name"))
                        + cur.getInt(cur.getColumnIndex("age"))+"\n";
            }
            mTV.setText(txt);
            // 关闭游标
            cur.close();
            break;
        default:
            break;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}


移动开发qq群:59516399

csdn下载链接:http://download.csdn.net/detail/wenwei19861106/4979777
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: