组件: ContentProvider

1.创建provider

public class DemoProvider extends ContentProvider {
    public static final int DEMO_DIR=0;
    public static final int DEMO_ITEM=1;
    public static final String AUTHORITIES="com.demo.provider";
    private static UriMatcher sUriMatcher;
    private DemoHelper mDemoHelper;
    static {
        sUriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
        sUriMatcher.addURI(AUTHORITIES,"xx",DEMO_DIR);
        sUriMatcher.addURI(AUTHORITIES,"xx/#",DEMO_ITEM);
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        SQLiteDatabase db=mDemoHelper.getWritableDatabase();
        int deletedRows=0;
        switch (sUriMatcher.match(uri)){
            case DEMO_DIR:
                deletedRows=db.delete("name",selection,selectionArgs);
                break;
            case DEMO_ITEM:
                String id=uri.getPathSegments().get(1);
                deletedRows=db.delete("name","id=?",new String[]{id});
                break;
        }
        return deletedRows;
    }

    @Override
    public String getType(Uri uri) {
       switch (sUriMatcher.match(uri)){
           case DEMO_DIR:
              return "vnd.android.cursor.dir/vnd.com.demo.provider.name";
           case DEMO_ITEM:
               String id=uri.getPathSegments().get(1);
              return "vnd.android.cursor.item/vnd.com.demo.provider.name";
       }
       return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        SQLiteDatabase db=mDemoHelper.getWritableDatabase();
        Uri returnUri=null;
        switch (sUriMatcher.match(uri)){
            case DEMO_DIR:
            case DEMO_ITEM:
               long newId=db.insert("tablename",null,values);
                returnUri=Uri.parse("content://"+AUTHORITIES+"/tablename/"+newId);
                break;
        }
        return returnUri;
    }

    @Override
    public boolean onCreate() {
        mDemoHelper=new DemoHelper(getContext(),"xxxx.db",null,1);
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder)
    {
        SQLiteDatabase db=mDemoHelper.getWritableDatabase();
        Cursor cursor=null;
        switch (sUriMatcher.match(uri)){
            case DEMO_DIR:
                cursor=db.query("tablename",projection,selection,selectionArgs,null,null,sortOrder);
                break;
            case DEMO_ITEM:
                String id=uri.getPathSegments().get(1);
                cursor=db.query("tablename",projection,"id=?",new String[]{id},null,null,sortOrder);
                break;
        }
        return cursor;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
        SQLiteDatabase db=mDemoHelper.getWritableDatabase();
      int updateRows=0;
        switch (sUriMatcher.match(uri)){
            case DEMO_DIR:
                updateRows=db.update("name",values,selection,selectionArgs);
                break;
            case DEMO_ITEM:
                String id=uri.getPathSegments().get(1);
                updateRows=db.update("name",values,"id=?",new String[]{id});
                break;
        }
        return updateRows;
    }
}

2.注册provider

 <provider
            android:name=".DemoProvider"
            android:authorities="com.demo.provider"
            android:enabled="true"
            android:exported="true">
        </provider>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值