Android ContentProvider

1.适用场景

1) ContentProvider为存储和读取数据提供了统一的接口

2) 使用ContentProvider,应用程序可以实现数据共享

3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)


// ContentProvider的主要方法   根据Uri的匹配(UriMatcher)来确定同一方法中操作的不同表

 
 
 
 
 
// 其实ContentProvider的增、删、改、查方法最后的具体操作也是通过SQLiteOpenHelper来获取SQLiteDatabase实现的
// 不过ContentProvider通过暴露Uri来实现不同应用程序间的数据共享

public abstract Uri insert(Uri uri, ContentValues values)
public abstract int delete(Uri uri, String selection, String[] selectionArgs)
public abstract int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
public abstract Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
// android提供的另一种跨进程的方法,根据method传进来的值去执行不同的操作,
public Bundle call(String method, String arg, Bundle extras)
// provider有个一个获取权限管理的方法,因为某些数据库的操作需要该进程具有某项权限
public AppOpsManager getAppOpsManager()public final String getCallingPackage() 
// 其他方法只能自己去源码看了


//这几个方法的调用时通过ContentResolver调用的 
//android通过方法参数的Uri去确定具体调用那个provider 
public final Uri insert(Uri url, ContentValues values) 
public final int delete(Uri url, String where, String[] selectionArgs) 
public final int update(Uri uri, ContentValues values, String where, String[] selectionArgs) 
public final Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 
public final Bundle call(Uri uri, String method, String arg, Bundle extras) 

// ContentProvider在AndroidManifest.xml的配置: 
<provider
   android:name=".DownloadStorageProvider"
   android:authorities="com.android.providers.downloads.documents"    // Uri的authorities,android区分不同uri对应的provider的根据
   android:grantUriPermissions="true" // 解释
   android:exported="true"          //是否能被其他进程调用
   android:permission="android.permission.MANAGE_DOCUMENTS">     // 权限
   <intent-filter>
       <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
   </intent-filter>
</provider> 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值