android 应用程序数据共享ContentR…

来源:互联网 发布:艾克里里视频软件 编辑:程序博客网 时间:2024/06/05 10:21

1.实现一个ContentProvider.

public class DataProviders extends ContentProvider {
 private static final String DATABASE_NAME ="UIDB";
 private static final int DATABASE_VERSION =1;
 private static final String TABLE_NAME ="UITable";

    publicstatic String ID = "_id";
    publicstatic String NAME = "display_name";
   
 private static class DatabaseHelper extendsSQLiteOpenHelper {
  DatabaseHelper(Context context){
   super(context,DATABASE_NAME, null, DATABASE_VERSION);
  }

  @Override
  public voidonCreate(SQLiteDatabase db) {
   Log.d("tag","onCreate");
   db.execSQL("CREATETABLE " + TABLE_NAME + " (" + ID
     +" INTEGER PRIMARY KEY AUTOINCREMENT," + NAME + " TEXT" +");");
  }

  @Override
  public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
   Log.d("tag","onUpgrade");
   db.execSQL("DROPTABLE IF EXISTS " + TABLE_NAME);
           onCreate(db);

  }
 }

 //---------------------------------------------------------------------------------
 private DatabaseHelper mOpenHelper;

 @Override
 public boolean onCreate() {
  mOpenHelper = newDatabaseHelper(getContext());
  return true;
 }

 @Override
 public Cursor query(Uri uri, String[] projection,String selection,
   String[]selectionArgs, String sortOrder) {
  SQLiteDatabase db =mOpenHelper.getReadableDatabase();
  
  Cursor c = db.query(TABLE_NAME,projection, selection, selectionArgs, null, null,
    null);
  return c;
 }

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

 @Override
 public Uri insert(Uri uri, ContentValuesinitialValues) {
  Log.d("tag", "insert");
  SQLiteDatabase db =mOpenHelper.getReadableDatabase();
  db.insert(TABLE_NAME, null,initialValues);
  return uri;
 }

 @Override
 public int delete(Uri uri, String where, String[]whereArgs) {
  Log.d("tag", "delete");
  SQLiteDatabase db =mOpenHelper.getReadableDatabase();
  return db.delete(TABLE_NAME,where, whereArgs);
 }

 @Override
 public int update(Uri uri, ContentValues values,String where,
   String[]whereArgs) {
  Log.d("tag", "update");
  
  getContext().getContentResolver().notifyChange(OServerActivity.CONTENT_URI,null);
  
  SQLiteDatabase db =mOpenHelper.getReadableDatabase();
  return db.update(TABLE_NAME,values, where, whereArgs);
 }

2.Androidmanifest.xml文件中声明 

<providerandroid:name=".DataProviders"    
            android:authorities="org.yihu.datachanage"/> 

 可定义provider权限

 android <wbr>应用程序数据共享ContentResolver/ContentProvider
3.定义 Uri 

 public static final Uri CONTENT_URI =Uri.parse("content://org.yihu.datachanage");

 

4.在其它程序中访问

public classShareDateActivity extends ListActivity {
 public static final Uri CONTENT_URI =Uri.parse("content://org.yihu.datachanage");
 @Override
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);

  Cursorc = getContentResolver().query(CONTENT_URI, null, null,
    null,null);

  startManagingCursor(c);

  ListAdapteradapter = new SimpleCursorAdapter(this,

  android.R.layout.simple_list_item_2,c,

  newString[] { "_id", "display_name" },

  newint[] { android.R.id.text1, android.R.id.text2 });

  setListAdapter(adapter);
 }
}

参考网址:

http://blog.csdn.net/student_cui/archive/2010/11/28/6040721.aspx

0 0
原创粉丝点击