android--ContentProvider

2022-07-31,

提供自己程序中的数据

继承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--ContentProvider.doc》

下载本文的Word格式文档,以方便收藏与打印。