1 什么是ContenPRovder? (1) ContenProvder是android四大組件之一,用來共享兩個應(yīng)用程序的內(nèi)的數(shù)據(jù),就是當(dāng)你需要把你應(yīng)用程序的東西分享給其他的應(yīng)用程序的時候我們才會用到它,ContenProvder對外提供了其他應(yīng)用可以直接訪問的增刪改查的方法。一旦使用ContenProvder讓別人來訪問自己的數(shù)據(jù),不管應(yīng)用程序是否打開都可以訪問的到。
(2)每個ContenProvder都有一個公共的Uri,用于表示ContenProvder所提供的數(shù)據(jù)。 就好比是android內(nèi)部的網(wǎng)站,地址是Uri。ContenProvder的Uri代表要操作的數(shù)據(jù),由scheme,authorites,path三部分組成。 scheme:固定為content,也就是協(xié)議。 authorites:節(jié)點中的屬性。 path:資源路徑。可根據(jù)邏輯業(yè)務(wù)定義。
(3)發(fā)送請求必須要由ContenProvder發(fā)出,它相當(dāng)于就是一個客戶端。
2 如何創(chuàng)建ContenProvder? 定義一個類繼承contentprovder重寫里面的方法。配置清單文件
清單文件配置:
<provider android:authorities="com.zking.android16_sqlite.data" android:name="com.zking.prvoide.MyPrvoider" android:exported="true"> </provider>代碼:public class MyPrvoider extends ContentProvider { private SQLiteDatabase sqLiteDatabase; @Override public boolean onCreate() { Log.i("test","+onCreate()" ); DbHelper dbHelper=new DbHelper(getContext(),"G150831.db",null,2); sqLiteDatabase = dbHelper.getReadableDatabase(); return false; } @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) { Log.i("test","query" ); return sqLiteDatabase.query(true,"person",strings,s,strings1,null,null,s1,null); } @Nullable @Override public String getType(Uri uri) { return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues contentValues) { return null; } @Override public int delete(Uri uri, String s, String[] strings) { return 0; } @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { return 0; }}新聞熱點
疑難解答