訪問其他程式中的資料
阿新 • • 發佈:2021-08-30
ContentResolver()中的增刪改查方法不接收表名引數,而使用的是一個Uri引數,這個引數被稱為內容URl。內容URl給內容提供器中的資料建立了唯一識別符號,它主要由兩部分組成:authority和path。authority是用於對不同的應用程式做區分,一般採用程式包名的方式進行命名,比如一個程式的包名為com.example.app,那麼該程式的authority就可以命名為com.example.app.provider。path是用於對同一程式中不同的表做區分的,通常新增到authority後面。比如某個程式的資料庫裡面存在兩張表,table1和table2,這時可以將path分別命名為/table1和/table2,然後將authority和path進行組合。除此以外,要辨別它是內容的URl,所以還要在字串的頭部加上協議宣告“content://”。綜上所述,內容URl最標準的寫法如下:
content://com.example.app.provider/table1
content://com.example.app.provider/table2
得到內容URl字串之後,我們需要將它解析成Uri物件才可以作為引數傳入,程式碼如下:
Uri uri = Uri.parse("content://com.example.app.provider/table1")
查詢
Cursor cursor = getContentResolver().query( uri, //查詢某張表 projection, //指定查詢的列名 selection, //指定where的約束條件 selectionArgs, //為where中的佔位符提供具體的值 sortOrder //指定查詢結果的排序方式 )
查詢完成後返回的是一個Cursor物件,這時我們可以將資料從Cursor物件中逐個讀取出來。
if (cursor ! = null) {
while(cursor.moveToNext(){
String column1 = cursor.getString(cursor.getColumnIndex("column1"));
String column2 = cursor.getString(cursor.getColumnIndex("column2"));
}
cursor.close();
}
增加
ContentValues contentValues = new ContentValues(); contentValues.put("column1", "text"); contentValues.put("column2", 1); getContentResolver().insert(uri, contentValues);
修改
ContentValues contentValues = new ContentValues();
contentValues.put("column1", "");
getContentResolver().update(uri,contentValues,"column1=? and column2 =?",new String[]{"text","1"});
刪除
getContentResolver().delete(uri,"column2 = ?",new String[]{"1"});