AnyblockResolver(ContentResolver)

一、使用ContentProvider(内容提供者)共享数据

ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行添删改查。关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE同样也可以对外共享数据。那么,这里为何要使用ContentProvider对外共享数据呢?是这样的,如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一,如:采用xml文件对外共享数据,需要进行xml解析才能读取数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读取数据。
使用ContentProvider对外共享数据的好处是统一了数据的访问方式。

二、使用ContentResolver操作ContentProvider中的数据

当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成,要获取ContentResolver 对象,可以使用Activity提供的getContentResolver()方法。 ContentResolver 类提供了与ContentProvider类相同签名的四个方法:
public Uri insert(Uri uri, ContentValues values):该方法用于往ContentProvider添加数据。
public int delete(Uri uri, String selection, String[] selectionArgs):该方法用于从ContentProvider删除数据。
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs):该方法用于更新ContentProvider中的数据。
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder):该方法用于从ContentProvider中获取数据。
这些方法的第一个参数为Uri,代表要操作的ContentProvider和对其中的什么数据进行操作。

更多帮助请看:http://www.cnblogs.com/linjiqin/archive/2011/05/28/2061396.html

 

以下为CC短信拦截的定义:

import android.net.Uri;

public class AnyblockResolver {
    public static final String AUTHORITY = "zhs.betalee.ccsmsblocker.AnyBlockProvider";
    /*
     * 规则 DB_TABLE = "rules"
     */
    // The incoming URI matches the Notes URI pattern
    public static final Uri RULES_CONTENT_URI = Uri.parse("content://zhs.betalee.ccsmsblocker.AnyBlockProvider/rules");
    public static final String[] RULES_PROJECTION = new String[] { "_id", "rule", "type", "remark", "notif", "isenabled" };
    public static final String DB_TABLE = "rules";
    public static final String KEY_ID = "_id";
    public static final String KEY_NAME = "rule";// 规则
    public static final String KEY_TYPE = "type";// 规则类型
    public static final String KEY_REMARK = "remark";// 备注
    public static final String KEY_NOTIF = "notif";// 1是0否通知
    public static final String KEY_ISENABLED = "isenabled";// 1启用0停用

    public static final int COLUMN_INDEX_KEY_ID           = 0;    
    public static final int COLUMN_INDEX_RULES_KEY_NAME = 1;
    public static final int COLUMN_INDEX_RULES_KEY_TYPE = 2;
    public static final int COLUMN_INDEX_RULES_KEY_REMARK = 3;
    public static final int COLUMN_INDEX_RULES_KEY_NOTIF = 4;
    public static final int COLUMN_INDEX_RULES_KEY_ISENABLED = 5;

    /*
     * 已拦截短信 BLOCKED_MESSAGES_DB_TABLE = "blockedmessages"
     */
    // The incoming URI matches the Notes URI pattern
    public static final Uri BLOCKEDMSG_CONTENT_URI = Uri.parse("content://zhs.betalee.ccsmsblocker.AnyBlockProvider/blockedmessages");
    public static final String[] BLOCKEDMSG_PROJECTION = new String[] { "_id", "number", "msgbody", "timestamp", "blockedrule", "status", "date2", "thread_id" };
    public static final String BLOCKED_MESSAGES_DB_TABLE = "blockedmessages";
    public static final String _ID = "_id";
    public static final String FORMADDRESS = "number";// 拦截号码
    public static final String MSGBODY = "msgbody";// 短信内容
    public static final String FORMTIME = "timestamp";// 发送时间
    public static final String BLOCKEDRULE = "blockedrule";// 拦截对应规则
    public static final String STATUS="status";// 1已读,0未读
    public static final String DATE2 = "date2";// 接收时间
    public static final String THREAD_ID = "thread_id";// 序号,同一发信人的id相同

    public static final int COLUMN_INDEX_BLOCKEDMSG_ID = 0;
    public static final int COLUMN_INDEX_BLOCKEDMSG_FORMADDRESS = 1;
    public static final int COLUMN_INDEX_BLOCKEDMSG_MSGBODY = 2;
    public static final int COLUMN_INDEX_BLOCKEDMSG_FORMTIME = 3;
    public static final int COLUMN_INDEX_BLOCKEDMSG_BLOCKEDRULE = 4;
    public static final int COLUMN_INDEX_BLOCKEDMSG_STATUS     = 5;
    public static final int COLUMN_INDEX_BLOCKEDMSG_DATE2 = 6;
    public static final int COLUMN_INDEX_BLOCKEDMSG_THREAD_ID = 7;
}

 

posted @ 2013-07-29 15:52  betaLee  阅读(1575)  评论(2)    收藏  举报