对于大部分的开发人员而言,很多应用是不涉及contentprovider的知识,所以一般而言,应用开发者接触的比较少。
contentprovider是内容提供者,把自己应用的数据,暴露给第三方来使用。一般来说,我们独立开发的app,肯定是具有自己的一些商业价值,不会随便暴露出去,影响自己的业绩。那么笔者就简单一个在源码开发中,曾经使用过的这个操作。主要就是大体介绍一下这个东西怎么使用。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="XXXXXXXXXXx"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="android.uid.system"
>
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<application>
<provider android:name=".FileProvider" android:authorities="com.amu.yuanma" android:singleUser="true"
android:exported="true"/>
</application>
</manifest>
public class FileProvider extends ContentProvider
@Override
public int delete(Uri uri, String filePath, String[] selectionArgs)
public Uri insert(Uri uri, ContentValues values)
@Override
public Cursor query(Uri uri, String[] projection, String folderPath,
String[] selectionArgs, String sortOrder)
public int update(Uri uri, ContentValues values, String noUse,
String[] paths)
在其他的程序里面:
Uri uri = Uri.withAppendedPath(
Uri.parse("content://com.amu.yuanma",
"23")
getContentResolver().delete(uri, path, null);
使用这种方式调用。
那么下面我就介绍一个在安卓源码里面使用的流程:
也是常规覆写:
在使用的时候:
使用content://com.xxx.xxx来进行数据操作:
虽然手写的跟官方的有些差距,但是基本操作思想是一样的。
1:contentProvider:覆写增删改查方法。增删改查会涉及到对象,所谓的数据库。
2:使用getContentResolver() ----resolver对象,调用增删改查处理即可。
resolver:notifychange(uri),registerContentObserver()