ContentProvider的简单使用

简介: ContentProvider的简单使用

ContentProvider 提供app间跨进程数据的共享,只是一种机制,本身并不提供数据存储服务,需配合数据库或别的持久化存储使用。

public class MyProvider extends ContentProvider {
 
    private static final String AUTHORITY = "com.example.test.provider"; //用于区分不同的ContentProvider
 
    private static final UriMatcher sUriMatcher;
    private static final int CODE1 = 0;
 
    private static final int CODE2 = 1;
 
    private static final String F1 = "f1";
 
    private static final String F2 = "f2";
 
    static {
        sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        //只对这两种uri进行处理 如果匹配上 通过 sUriMatcher.match(uri)可以得到 对应的Code
        sUriMatcher.addURI(AUTHORITY, F1, CODE1);
        sUriMatcher.addURI(AUTHORITY, F2, CODE2);
    }
 
    @Override
    public boolean onCreate() {
        return true;
    }
 
    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection,
            @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        String[] tableCursor = new String[] { "name", "job", "salary" };
        MatrixCursor cursor = new MatrixCursor(tableCursor);
        switch (sUriMatcher.match(uri)) {
            case CODE1:
                cursor.addRow(new Object[] { "1111", "111", "11" });
                break;
            case CODE2:
                cursor.addRow(new Object[] { "2222", "222", "22" });
                break;
        }
        return cursor;
    }
 
    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }
 
    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        return null;
    }
 
    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection,
            @Nullable String[] selectionArgs) {
        return 0;
    }
 
    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection,
            @Nullable String[] selectionArgs) {
        return 0;
    }
}
public class MyService extends Service {
    private static final String AUTHORITY = "com.example.test.provider";
    public static Uri sUri = Uri.parse("content://" + AUTHORITY + "/f2");
 
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
查找
        Cursor query = getContentResolver().query(sUri, null, null, null, null, null);
        if (query!=null){
            query.moveToNext();
            String s0 = query.getString(0);
            String s1 = query.getString(1);
            Log.e("test","s0"+s0+"    s1"+s1);
        }
        return super.onStartCommand(intent, flags, startId);
    }
}
 <service android:name=".MyService" />
 
        <provider
            android:authorities="com.example.test.provider"
            android:name=".MyProvider"
            android:exported="true"
            android:enabled="true"/>


目录
相关文章
|
JSON Java 数据格式
Java读取resource目录下的json文件
Java读取resource目录下的json文件
971 0
|
Java Maven
IDEA自带Maven添加阿里镜像
IDEA自带Maven添加阿里镜像
IDEA自带Maven添加阿里镜像
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
659 47
Harmony OS开发-ArkTS语言速成二
|
Android开发
AS错误:Duplicate class kotlin.xxx.jdk8.DurationConversionsJDK8Kt found in modules kotlin-stdlib-1.8.22
本文描述了Android Studio中遇到的"Duplicate class found in modules"错误的解决方法,通过在`app/build.gradle`文件中使用`constraints`来排除过时的kotlin-stdlib-jdk7和kotlin-stdlib-jdk8依赖,解决了依赖冲突问题。
1462 1
|
Java API Spring
Spring Boot中的API版本控制
Spring Boot中的API版本控制
|
Cloud Native Go 开发工具
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
859 0
|
网络协议
Internet的形成与发展
Internet的形成与发展。
1066 1
Shiro用户鉴权框架 子线程获取不到用户信息问题解决
Shiro用户鉴权框架 子线程获取不到用户信息问题解决
|
Java 开发者
openssl win10安装 生成开发者 RSA 私钥 、公钥
openssl win10安装 生成开发者 RSA 私钥 、公钥
417 1
|
算法 Java 索引
【Java】已解决java.lang.ArrayIndexOutOfBoundsException异常
【Java】已解决java.lang.ArrayIndexOutOfBoundsException异常
2305 0