一、概述
Android提供了ContentProvider组件,可以将一个应用的数据提供给另一个应用使用
二、使用先创建继承ContentProvider的类
1 public class DemoProvider extends ContentProvider{ 2 3 //Uri路径匹配,没有返回-1 4 public static final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); 5 public static final int CODE = 1; 6 7 static{ 8 //创建匹配规则 authorities(主机名)、路径、编码(匹配成功返回值) 9 //路径后可增加数字(用"#"表示) 10 //Uri:"com.demo.DemoContentProvider/path/#" 11 matcher.addURI("com.demo.DemoContentProvider","path",CODE); 12 } 13 14 @Override 15 public boolen onCreate(){ 16 return false; 17 } 18 19 //Uri、查询的列、条件、条件对应参数、排序 20 @Override 21 public String query(Uri uri,String[] projection,String selection, 22 String[] selectionArgs,String sortOrder){ 23 int back = matcher.match(uri); 24 //返回值相同 25 if(back == CODE){ 26 //这里进行查询操作 27 //若要去path中数字使用long id = ContentUris.parseId(uri); 28 //略... 29 } 30 return null; 31 } 32 33 @Override 34 public String getType(Uri uri){ 35 return null; 36 } 37 38 @Override 39 public Uri insert(Uri uri,ContentValues values){ 40 return null; 41 } 42 43 @Override 44 public int delete(Uri uri,String selection,String[] selectionArgs){ 45 return 0; 46 } 47 48 @Override 49 public int update(Uri uri,ContentValues values,String selection, 50 String[] selectionArgs){ 51 return 0; 52 } 53 }
三、清单文件中配置
1 <!--authorities译为官方,这里表示一个标识Uri--> 2 <provider 3 android:name=".DemoContentProvider" 4 android:authorities="com.demo.DemoContentProvider" 5 />
四、另一个应用中调用
1 //使用内容解析者 2 //内容解析者使用内容提供者查找对应Uri,然后将数据返回 3 ContenResolver resolver = getContentResolver() ; 4 Uri uri = Uri.parse("content://com.demo.DemoContentProvider/path"); 5 Cursor cursor = resolver.query(uri,null,null,null,null);