內容提供者ContentProvider

2021-08-17 18:54:50 字數 3112 閱讀 6491

9.內容提供者:content provider :不同應用程式間實現資料共享功能。

用法2種:

1.讀取和操作相應程式中的資料

2.給jj程式的資料提供外部介面

3.訪問內容提供者 中的共享資料需要借助 contentresolver類 進行共享資料的curd

); // 刪除

getcontentresolver().delete(uri,"name1 = ? ",new string);

}}10. android 執行時許可權

11.android 的危險許可權需要加入執行時許可權處理,其它普通許可權只需要在androidmanifest中新增許可權即可

12.撥打**的執行時許可權完整流程

, 1);

}else

}private void call()

catch (exception e)

}@override

public void onrequestpermissionsresult(int requestcode, string permissions, int grantresults)

break;

default:

break;}}

}13. 建立jj的內容提供者

3.使用萬用字元匹配: 

14.uri物件所對應的mime型別 :主要由3部分組成

1.必須以vnd開頭

2.如果uri以路徑結尾:則後接android.cursor.dir/ 如果以id結尾:則後接android.cursor.item/

15. jj完整的內容提供者

1.建立乙個類繼承contentprovider,實現其6個方法

2.使用urimatcher實現內容匹配uri的功能

3.當呼叫urimatcher的match時,傳入乙個uri物件,返回值就是能夠匹配這個uri物件對應的自定義**,就可以知道呼叫方希望訪問哪張表資料

public class myprovider extends contentprovider

// contentresolver 嘗試訪問程式資料時候 內容提供者才會初始化,返回true代表成功

@override

public boolean oncreate()

@override

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

return null;

}// 根據傳入的uri來返回相應的mime型別

@override

public string gettype(uri uri)

return null;

}@override

public uri insert(uri uri, contentvalues values)

@override

public int delete(uri uri, string selection, string selectionargs)

@override

public int update(uri uri, contentvalues values, string selection, string selectionargs)

}16.建立jj的內容提供者 myprovider

public class myprovider extends contentprovider

// contentresolver 嘗試訪問程式資料時候 內容提供者才會初始化,返回true代表成功

@override

public boolean oncreate()

@override

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

, null, null, sortorder);

break;

}return cursor;

}// 根據傳入的uri來返回相應的mime型別

@override

public string gettype(uri uri)

return null;

}@override

public uri insert(uri uri, contentvalues values)

return urireturn;

}@override

public int delete(uri uri, string selection, string selectionargs)

);break;

}return deleterows;

}@override

public int update(uri uri, contentvalues values, string selection, string selectionargs));}

return updaterows;

}需要在androidmanifest中註冊

android:allowbackup="true"

android:icon="@mipmap/ic_launcher"

android:roundicon="@mipmap/ic_launcher_round"

android:supportsrtl="true"

// 註冊內容提供者

使用jj建立的內容提供者

cursor.close();

// 更新資料

uri uri1 = uri.parse("content:"+newid);

contentvalues values1 = new contentvalues();

values1.put("name","hehe");

getcontentresolver().update(uri,values,null,null);

// 刪除

getcontentresolver().delete(uri1,null,null);

}}

內容提供者

public class personcontentprovider extends contentprovider override public boolean oncreate 作用 判斷 傳進來的 uri 查詢的是一條資料 還是多條資料 override public string gett...

內容提供者

package com.xh.tx.utils import android.content.context import android.database.sqlite.sqlitedatabase import android.database.sqlite.sqlitedatabase.cur...

內容提供者

讀取系統簡訊,首先查詢原始碼獲得簡訊資料庫內容提供者的主機名和路徑,然後 contentresolver cr getcontentresolver cursor c cr.query uri.parse content sms new string,null,null,null while c.m...