内容提供者写法

内容提供者写法

内容提供者主要是提供接口给第三方应用调用,增删改查。

第一步:建一个类实现ContentProvider

package com.miquan.demo;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;

public class MyContentProvider extends ContentProvider {
    // 定义一个匹配器
    private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);

    private static final int MATCH_WORDS = 1;// 匹配为所有word
    private static final int MATCH_WORD = 2;// 匹配某一个word

    static {
        MATCHER.addURI("com.miquan.myprovider", "word", MATCH_WORDS);
        // #代表数字,*代表所有字符
        MATCHER.addURI("com.miquan.myprovider", "word/#", MATCH_WORD);
    }

    public MyContentProvider() {
    }

    @Override
    public boolean onCreate() {
        return false;
    }

    @Override
    public String getType(Uri uri) {
        // 需要获取数据类型的时候,实现这个方法
        switch (MATCHER.match(uri)) {
            case MATCH_WORDS:
                // 得到的是一个集合,前部分是android固定的写法
                return "vnd.android.cursor.dir/word";
            case MATCH_WORD:
                // 得到的是一个item
                return "vnd.android.cursor.item/word";
            default: {
                // 不匹配
                throw new IllegalArgumentException("Uri 不匹配 :" + uri);
            }
        }
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        switch (MATCHER.match(uri)) {
            case MATCH_WORDS:
                String word = values.getAsString("word");

                // 这里已经获取到传过来的数据了,在进行保存就行。

                return ContentUris.withAppendedId(uri, 1);
            default: {
                // 不匹配
                throw new IllegalArgumentException("Uri 不匹配 :" + uri);
            }
        }
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        switch (MATCHER.match(uri)) {
            case MATCH_WORDS:
                // 删除所有记录
                return 0;
            case MATCH_WORD:
                // 删除某一条记录
                return 0;
            default: {
                // 不匹配
                throw new IllegalArgumentException("Uri 不匹配 :" + uri);
            }
        }
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

第二步:在清单中注册。

<provider  android:name=".MyContentProvider" android:authorities="com.miquan.myprovider" android:enabled="true" android:exported="true" >
</provider>

第三步:在第三方应用中调用。

Uri uri = Uri.parse("content://com.miquan.myprovider/word");
ContentResolver resolver = getContentResolver();
ContentValues values = new ContentValues();
values.put("word", "无忌船长");
resolver.insert(uri, values);

收工。

你可能感兴趣的:(内容提供者,增删改查,调用,第三方应用)