當應用繼承contentprovider類,並重寫該類用於提供資料和儲存資料的方法,就可以向其他應用共享其資料。以前我們學習過檔案的操作模式,通過指定檔案的操作模式為context.mode_world_readable 或context.mode_world_writeable同樣可以對外共享資料,但資料的訪問方式會因資料儲存的方式而不同,如:採用xml檔案對外共享資料,需要進行xml解析來讀寫資料;採用sharedpreferences共享資料,需要使用sharedpreferences api讀寫資料。而使用contentprovider共享資料的好處是統一了資料訪問方式。
當應用需要通過contentprovider對外共享資料時,第一步需要繼承contentprovider並重寫下面方法:
publicclass personcontentproviderextends contentprovider
第二步需要在androidmanifest.xml使用對該contentprovider進行配置,為了能讓其他應用找到該contentprovider , contentprovider 採用了authorities(主機名/網域名稱)對它進行唯一標識,你可以把 contentprovider看作是乙個**(想想,**也是提供資料者),authorities 就是他的網域名稱:
注意:一旦應用繼承了contentprovider類,後面我們就會把這個應用稱為contentprovider(內容提供者)。
package cn.cloud.db;
import cn.cloud.service.dbopenhelper;
import android.content.contentprovider;
import android.content.contenturis;
import android.content.contentvalues;
import android.content.urimatcher;
import android.database.cursor;
import android.database.sqlite.sqlitedatabase;
import android.net.uri;
public class personcontentprovider extends contentprovider
@override
public boolean oncreate()
@override
public int delete(uri uri, string selection, string selectionargs)
num = db.delete("person", where, selectionargs);
break;
default:
throw new illegalargumentexception("unkown uri:"+ uri);
} getcontext().getcontentresolver().notifychange(uri, null);
return num;
} @override
public string gettype(uri uri)
} @override
public uri insert(uri uri, contentvalues values)
} @override
public cursor query(uri uri, string projection, string selection, string selectionargs, string sortorder)
return db.query("person", projection, where, selectionargs, null, null, sortorder);
default:
throw new illegalargumentexception("unkown uri:"+ uri);
} }@override
public int update(uri uri, contentvalues values, string selection, string selectionargs)
num = db.update("person", values, where, selectionargs);
break;
default:
throw new illegalargumentexception("unkown uri:"+ uri);
} getcontext().getcontentresolver().notifychange(uri, null);//通知資料發生變化
return num;
}}
如何建立自己的contentprovider
如何建立自己的contentprovider 作為androidl四大元件 compenent activity,service,breadcasereceiver,contentprovider 之一的content provider,為其它應用程式 也可以是提供該 content provide...
安卓四大元件之ContentProvider
contentprovider是內容提供者 為什麼要有內容提供者?因為在安卓中每乙個應用的資料庫檔案都是私有的,自能在自己的應用中自己使用,別的應用要是想訪問,那麼就需要修改檔案的許可權,這樣資料就變的不安全了,所以就引入了內容提供者。首先來說一下內容提供者中的乙個重要的類uri,熟悉uri會使我們...
8 四大元件之三 ContentProvider
課程目標 理解contentprovider的作用及好處 認清contentprovider與資料儲存的關係 掌握contentprovider對外提供的資料模型形式 能夠編寫contentresolver的增刪改查 能夠自定義乙個contentprovider 能夠提供程序間訪問 了解conten...