android這個系統和其他的作業系統還不太一樣,我們需要記住的是,資料在android當中是私有的,當然這些資料報括檔案資料和資料庫資料以及一些其他型別的資料。那這個時候有讀者就會提出問題,難道兩個程式之間就沒有辦法對於資料進行交換?android這麼優秀的系統不會讓這種情況發生的。解決這個問題主要靠contentprovider。乙個content provider類實現了一組標準的方法介面,從而能夠讓其他的應用儲存或讀取此content provider的各種資料型別。也就是說,乙個程式可以通過實現乙個content provider的抽象介面將自己的資料暴露出去。外界根本看不到,也不用看到這個應用暴露的資料在應用當中是如何儲存的,或者是用資料庫儲存還是用檔案儲存,還是通過網上獲得,這些一切都不重要,重要的是外界可以通過這一套標準及統一的介面和程式裡的資料打交道,可以讀取程式的資料,也可以刪除程式的資料,當然,中間也會涉及一些許可權的問題。
在content provider中使用的查詢字串有別於標準的sql查詢。很多諸如select, add, delete, modify等操作我們都使用一種特殊的uri來進行,這種uri由3個部分組成, 「content://」, 代表資料的路徑,和乙個可選的標識資料的id。
建立content provider:
至此我們已經知道如何使用content provider了,現在讓我們來看下如何自己建立乙個content provider。
要建立我們自己的content provider的話,我們需要遵循以下幾步:
建立乙個繼承了contentprovider父類的類
定義乙個名為content_uri,並且是public static final的uri型別的類變數,你必須為其指定乙個唯一的字串值,最好的方案是以類的全名稱,
如: public static final uri content_uri = uri.parse( 「content:
建立你的資料儲存系統。大多數content provider使用android檔案系統或sqlite資料庫來保持資料,但是你也可以以任何你想要的方式來儲存。
定義你要返回給客戶端的資料列名。如果你正在使用android資料庫,則資料列的使用方式就和你以往所熟悉的其他資料庫一樣。但是,你必須為其定義乙個叫_id的列,它用來表示每條記錄的唯一性。
如果你要儲存位元組型資料,比如位**件等,那儲存該資料的資料列其實是乙個表示實際儲存檔案的uri字串,客戶端通過它來讀取對應的檔案資料,處理這種資料型別的content provider需要實現乙個名為_data的字段,_data欄位列出了該檔案在android檔案系統上的精確路徑。這個字段不僅是供客戶端使用,而且也可以供contentresolver使用。客戶端可以呼叫contentresolver.openoutputstream()方法來處理該uri指向的檔案資源,如果是contentresolver本身的話,由於其持有的許可權比客戶端要高,所以它能直接訪問該資料檔案。
宣告public static string型的變數,用於指定要從游標處返回的資料列。
查詢返回乙個cursor型別的物件。所有執行寫操作的方法如insert(), update() 以及delete()都將被監聽。我們可以通過使用contentresover().notifychange()方法來通知***關於資料更新的資訊。
在androidmenifest.xml中使用標籤來設定content provider。
如果你要處理的資料型別是一種比較新的型別,你就必須先定義乙個新的mime型別,以供contentprovider.getype(url)來返回。
Android資料儲存方案 檔案儲存
android中,檔案儲存方案也比較簡單,一般使用 fileoutputstream bufferedwriter寫入檔案,使用fileinputstream bufferedreader讀出檔案內容。不過,檔案是存放在 data data com.test files 資料夾下面。下面,我們看看示...
Android資料儲存
android中一共提供了4種資料儲存方式 shared preferences 用來儲存 key value paires 格式的資料,它是乙個輕量級的鍵值儲存機制,只可以儲存基本資料型別。files 他通過fileinputstream和fileoutputstream對檔案進行操作。但是在an...
Android資料儲存
1.五種儲存方式 android作業系統提供了一種公共檔案系統,即任何應用軟體都可以使用它來儲存和讀取檔案,該檔案被其他的應用軟體讀取。android採用了一種不同的系統,在android中,所有的應用軟體資料 為應用軟體私有,然而,android也提供了一種標準方式 用軟體將私有資料開放給其他應用...