Android学习之ContentProvider(上)

1.ContentProvider用途:应用之间数据共享。
2.整个ContentProvider使用过程:Activity创建ContentResolver对象,根据共享数据地址(URI)进行CURID,后台ContentProvider对象执行相应的方法,访问SQLite数据库,将结果返回,完成数据共享操作。
下面用我做的DEMO来体验一下:
先说说我项目布置:项目【ProviderSample】是创建数据共享的源应用,项目【TestProvider】是测试去读取项目【ProviderSample】所创建的共享数据。
一、项目【ProviderSample】
1.AndroidManifest.xml
http://schemas.android.com/apk/res/android"
    package="cn.gd.pl.lan.providersample"
    android:versionCode="1"
    android:versionName="1.0" >
            android:minSdkVersion="8"
        android:targetSdkVersion="15" />
            android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
                    android:name=".MainActivity"
            android:label="@string/title_activity_main" >  
            android:name=".StudentProvider"
            android:authorities="cn.gd.pl.lan.provider">
   
彩色部分注册Provider权限。
2.MainActivity.java
package cn.gd.pl.lan.providersample;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
 
 private TextView tv;
 private ContentValues cv;
 private Cursor cursor = null;
 private ContentResolver cr;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        String rs = "hello:";
        cr = this.getContentResolver();
        cv = new ContentValues();
        cv.put(StudentColumns.ID,1004);//每次运行要改一下value,也可以(int)Math.random()*1000,否则重复插入报错
        cv.put(StudentColumns.NAME, "lan");
        cv.put(StudentColumns.AGE, 22);
        cv.put(StudentColumns.SEX, "male");
        cv.put(StudentColumns.GRADE, 5);
        cr.insert(StudentColumns.CONTENT_URI, cv);
  cursor = cr.query(StudentColumns.CONTENT_URI, StudentColumns.OUTPUT_COLUMNS, null, null, null);
  cursor.moveToFirst();
  while(cursor.moveToNext()){
   System.out.println("loki:in here");
   rs = rs + " ,id=" + cursor.getInt(0)+".";
   rs = rs + " ,name=" + cursor.getString(1)+".";
   rs = rs + " ,age=" + cursor.getInt(2)+".";
   rs = rs + " ,sex=" + cursor.getString(3)+".";
   rs = rs + " ,grade=" + cursor.getInt(4)+".";
  }
  cursor.close();
  tv.setText(rs);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}


你可能感兴趣的:(Android学习之ContentProvider(上))