AnyblockResolver(ContentResolver)

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

ContentProvider在android中的做用是对外共享数据,也就是说你能够经过ContentProvider把应用中的数据共享给其余应用访问,其余应用能够经过ContentProvider对你应用中的数据进行添删改查。关于数据共享,之前咱们学习过文件操做模式,知道经过指定文件的操做模式为Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE一样也能够对外共享数据。那么,这里为什么要使用ContentProvider对外共享数据呢?是这样的,若是采用文件操做模式对外共享数据,数据的访问方式会因数据存储的方式而不一样,致使数据的访问方式没法统一,如:采用xml文件对外共享数据,须要进行xml解析才能读取数据;采用sharedpreferences共享数据,须要使用sharedpreferences API读取数据。
使用ContentProvider对外共享数据的好处是统一了数据的访问方式。html

2、使用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和对其中的什么数据进行操做。android

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

 

如下为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;
}
本站公众号
   欢迎关注本站公众号,获取更多信息