欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

android--ContentProvider

程序员文章站 2022-03-21 22:16:04
提供自己程序中的数据继承ContentProvider+数据库class MyProvider extends ContentProvider{onCreate()query()insert()update()delete()getType()}...

提供自己程序中的数据

继承ContentProvider

class MyProvider extends ContentProvider{
		onCreate() //作用:创建数据库
		//增删改查 通过UriMatcher类的addUri方法添加能够匹配的内容
		//假如传入的uri 为content://com.example.test.provider/table
		UriMatcher matcher=new UriMatcher();
		matcher.addURI("com.example.test","table",自定义常量);
		//UriMatcher就可以匹配uri,并返回对应的自定义常量
		public Cursor query(Uri uri,String[]column,String selection,String[]selectionArgs,String orderBy){
		//与getContentResilver.query()方法对应
		switch(matcher.match(uri)){
		      case 自定义常量:
		      //查询操作
		      ...
		      break;
		    }
		}
		insert()//与查询操作相同
		update()//与查询操作相同
		delete()//与查询操作相同
		getType()//作用:获得uri对象对应的MIME类型 格式规定:vnd.android.cursor.dir(item)/vnd.包名.表名
		public String getType(Uri uri){
		    //假如传入的uri 为content://com.example.test.provider/table
			return "vnd.android,cursor.dir/vnd.com.example.test.provider.table"
		    //假如传入的uri 为content://com.example.test.provider/table/1
			return "vnd.android,cursor.item/vnd.com.example.test.provider.table"
		}
}

在AndroidManifest.xml中注册

...
  <provider
        android:name=类地址
        android:authrities=权限
        android:exported="true"> 
  </provider>
...

访问其他程序中的数据

ContentResolver
uri:标识符 content://包名.provider/表名
url:定位符

//查:
getContentResolver.query(uri,查询列名,约束条件,约束条件具体值,排序方式);
//增:
ContentValues value=new ContentValues();
value.put(,);
getContentResolver.insert(uri,values);
//改:
ContentValues value=new COntentValues();
value.put(,);
getContentResolver.update(uri,value,"列=?"new String[]{"原值"});
//删:
getContentResolver.delete(uri,"列=?",new String[]{"值"});

联系人 uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
短信
多媒体

本文地址:https://blog.csdn.net/qq_33474233/article/details/107868833

相关标签: Android 基础