ContentProvider数据提供者
用与程序与程序之间的数据传递。
ContentProvider提供了其他程序调用该程序内部数据的调用方法。
/* * 用来定义其他程序调用该程序数据时 * 可以进行的操作。 */ public class MyContentProvider extends ContentProvider { @Override//在ContentProvider创建后被调用 public boolean onCreate() { // TODO Auto-generated method stub return false; } @Override//根据Uri,插入valuse对应的数据 public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub return null; } @Override//根据Uri删除指定条件(selection和selectionArgs)匹配的全部记录 public int delete(Uri arg0, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } @Override//根据Uri查询指定条件(selection和selectionArgs)匹配的全部记录,projection(列名),sortOrder(排序) public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // TODO Auto-generated method stub return null; } @Override//根据Uri修改指定条件(selection)匹配的全部记录,修改为values对应的数据 public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } @Override//返回当前Uri的MIME类型,如果Uri对应数据可能包含多条记录 //那么MIME类型字符串就以vnd.android.dir/开头 //如果Uri对应数据只有一条,那么MIME类型字符串就以vnd.android.cursor.item/开头 public String getType(Uri uri) { // TODO Auto-generated method stub return null; } }
记得注册:
<provider android:name=".MyContentProvider" android:authorities="com.example.z_contentprovider"> </provider>
一般调用ContentProvider的方法是通过Uri对象
还可以调用系统的ContentProvider
/** * 数据提供者ContentProvider: * 四大组件,存储方式,可以跨程序处理数据 * 其他存储形式都只是在单独一个程序中完成一个数据的共享 * 不能调用其他程序的数据 */ /** * 其他程序调用自定义的ContentProvider时,需要用通用资源表字符(Uri)记录授权信息 * android:authorities="com.example.z_contentprovider" * 这是使用ContentProvider需要在AndroidManifest.xml中组成的一个属性,就是授权记录的名字。 */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 系统提供的ContentProvider可以调用系统短信,联系人,图片音乐等资源。 * ContentResolver对象和ContentProvider一样提供了通过uri的增删查改方法。 */ ContentResolver cp = getContentResolver(); ContentValues values = new ContentValues(); //cp.insert(url, values); //cp.delete(url, where, selectionArgs); //cp.update(url, values, where, selectionArgs) //cp.insert(url, values); } }
如果有什么错误,或者我理解错误或不当的,恳请大家纠正,谢谢!嘻嘻嘻~
时间: 2024-10-10 07:50:23