您好,登錄后才能下訂單哦!
這篇文章主要介紹“Android中的Content Provider有什么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android中的Content Provider有什么用”文章能幫助大家解決問題。
Content Provider(內容提供器)
在內容提供器中,有別于文件儲存這類的是,他可以指定想要共享的部分,而不是全局共享
對于每一個應用程序來說,如果想要訪問內容提供器里共享的數據,就一定要借助ContentResolver類,通過getContent -Resolver獲取實例,在ContentResolver中提供了一系CRUD(增刪改查)的方法進行操作其中
insert,添加數據
update,更新數據
delete,刪除數據
query,查詢數據
不同于SQLiteDatebase,ContentResolver中的CRUD是使用一個Uri參數代替,這個參數被稱為內容參數,由兩部分組成:authority和path。authority主要用來對不同應用進行區分,path用于對同一個應用的不同表進行區分
例如:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button addData = (Button) findViewById(R.id.add_data); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 添加數據 Uri uri = Uri.parse("content://com.example.databasetest.provider/book"); ContentValues values = new ContentValues(); values.put("name", "A Clash of Kings"); values.put("author", "George Martin"); values.put("pages", 1040); values.put("price", 55.55); Uri newUri = getContentResolver().insert(uri, values); newId = newUri.getPathSegments().get(1); } }); Button queryData = (Button) findViewById(R.id.query_data); queryData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 查詢數據 Uri uri = Uri.parse("content://com.example.databasetest.provider/book"); Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor. getColumnIndex("name")); String author = cursor.getString(cursor. getColumnIndex("author")); int pages = cursor.getInt(cursor.getColumnIndex ("pages")); double price = cursor.getDouble(cursor. getColumnIndex("price")); Log.d("MainActivity", "book name is " + name); Log.d("MainActivity", "book author is " + author); Log.d("MainActivity", "book pages is " + pages); Log.d("MainActivity", "book price is " + price); } cursor.close(); } } }); Button updateData = (Button) findViewById(R.id.update_data); updateData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 更新數據 Uri uri = Uri.parse("content://com.example.databasetest.provider/book/" + newId); ContentValues values = new ContentValues(); values.put("name", "A Storm of Swords"); values.put("pages", 1216); values.put("price", 24.05); getContentResolver().update(uri, values, null, null); } }); Button deleteData = (Button) findViewById(R.id.delete_data); deleteData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 刪除數據 Uri uri = Uri.parse("content://com.example.databasetest.provider/book/" + newId); getContentResolver().delete(uri, null, null); } }); }
似乎很簡單的樣子,但是這樣就一定安全嗎?或者說是所有人都用這個方法去共享數據的嗎,如果不是呢?這就要說到自己創建內容提供器
繼承ContentProvider,然后實現他的六個抽象方法即可
onCreate()
query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder)
insert(Uri uri,ContentValues values)
updaya(Uri uri,ContentValues values)
updata(Uri uri,ContenValues values,String selection,String[]selectionArgs)
delete(Uri uri,String selection,String[] selectionArgs)
getType(Uri uri)
關于“Android中的Content Provider有什么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。