Content Provider實現跨程式資料共享

2021-07-10 23:54:35 字數 3588 閱讀 1978

自定義content provider

public

class

mydatabaseprovider

extends

contentprovider

@override

public

boolean

oncreate()

@override

public cursor query(uri uri, string projection, string selection, string selectionargs, string sortorder) ,null,null,sortorder);

break;

case h_dir:

cursor=db.query("helloword",projection,selection,selectionargs,null,null,sortorder);

break;

case h_item:

string helloid= uri.getpathsegments().get(1);

cursor=db.query("helloword",projection,"id=?",new string,null,null,sortorder);

break;

}return cursor;

}@override

public uri insert(uri uri, contentvalues values)

return urireturn;

}@override

public

intdelete(uri uri, string selection, string selectionargs) );

break;

case h_dir:

deleterows=db.delete("helloword",selection,selectionargs);

break;

case h_item:

string hid=uri.getpathsegments().get(1);

deleterows=db.delete("helloword","id=?",new string);

break;

}return deleterows;

}@override

public

intupdate(uri uri, contentvalues values, string selection, string selectionargs) );

break;

case h_dir:

updaterows=db.update("helloword",values,selection,selectionargs);

break;

case h_item:

string hid=uri.getpathsegments().get(1);

updaterows=db.update("helloword",values,"id=?",new string);

break;

}return updaterows;

}@override

public string gettype(uri uri)

return

null;

}}

string hid=uri.getpathsegments().get(1);
oncreate(),初始化內容時呼叫,返回true表示初始化成功,false表示失敗

query(),新增資料的方法,新增完成後,返回乙個用於表示這條新記錄的uri。

update(),更新資料的方法,返回值就是更新資料受影響的行數

delete(),刪除資料的方法,返回值就是刪除資料受影響的行數

gettype(),根據傳入的內容uri來返回相應的mime型別。

gettype()的返回值要求:

(1)必須以vnd開頭

(2)如果內容以uri路徑結尾,則後接android.cursor.dir/,如果內容uri以id結尾,則後接android.cursor.item/

(3)最後接上vnd.包名./provider.表名

private

static urimatcher urimatcher;

static

@override

public cursor query(uri uri, string projection, string selection, string selectionargs, string sortorder)

return

null;

}

另建專案測試
<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.lingzhuo.testprovider2.mainactivity">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="增"

android:id="@+id/button_add" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="刪"

android:id="@+id/button_delete" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="改"

android:id="@+id/button_change" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="查"

android:id="@+id/button_search" />

linearlayout>

public

class

mainactivity

extends

implements

view.onclicklistener

private

void

init()

@override

public

void

onclick(view v)

}break;}}

}

如何新增Content Provider

一 寫在前面 一直很好奇系統是如何通過 content 來訪問歸屬地資料庫的,通過研究 和api參考文件以及網路上的資料基本上弄明白了,於是有了以下的內容。二 android content provider介紹 三 content provider的組成 四 新增content provider ...

ContentProvider基本使用

在不同應用之間實現資料共享,並保證安全性 比較 新增 沒有條件約束,刪除 沒有資料contentvalues getcontentresolver insert uri uri,contentvalues values getcontentresolver update uri uri,conten...

ContentProvider簡單使用

一是使用內容提供器讀取和操作其他應用程式的資料 二是建立內容提供器給該程式的資料提供外部訪問介面 如 簿,簡訊,庫,都有內容提供器讓它們的資料有外部訪問介面 內容提供器提供的資料外部訪問介面是乙個uri.它由authority和path組成 path相當於不同的表加在authority的後面。如有表...