首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

初学ContentProvider的几个小问题

2012-08-29 
初学ContentProvider的几个问题Java code public Uri insert(Uri uri, ContentValues values) {switch(MAT

初学ContentProvider的几个问题

Java code
 public Uri insert(Uri uri, ContentValues values) {        switch(MATCHER.match(uri)) {            case TB:                ContentValues v2 = new ContentValues(values);                // 判断是否存在该值                if(!v2.containsKey(table.KEY_NAME)) {                    values.put(table.KEY_NAME, "def_name");                }                if(!v2.containsKey(table.KEY_NUM)) {                    values.put(table.KEY_NUM, "def_num");                }                SQLiteDatabase db = databaseHelper.getWritableDatabase();                // 返回行ID  [color=#FF0000]红色的地方写的内容有什么限制为什么?[/color]--------------------------------------------                long rowId = db.insert(databaseHelper.DB_TABLE, [color=#FF0000]table.KEY_NAME[/color],                        values);--------------------------------------------                Log.e("cp", "rowid " + rowId);                if(rowId > 0) {                    // 生成一个URI content://d.m.dbname/tb/1                    Uri noteUri = ContentUris.withAppendedId(                            Uri.parse("content://" + table.AUTHORITY + "/tb"),                            rowId);                    getContext().getContentResolver().notifyChange(noteUri,                            null);                    return noteUri;                }                break;        }        return null;    }    @Override    public Cursor query(Uri uri, String[] projection, String selection,            String[] selectionArgs, String sortOrder) {        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();        switch(MATCHER.match(uri)) {            case TB:                qb.setTables(DatabaseHelper.DB_TABLE);                qb.setProjectionMap(projectMap);                break;            case TB_ID:                break;        }        SQLiteDatabase db = databaseHelper.getReadableDatabase();        Cursor c = qb.query(db, projection, selection, selectionArgs, null,                null, sortOrder);--------------------------------------------//这句的作用是什么?        [color=#FF0000]c.setNotificationUri(getContext().getContentResolver(), uri);[/color]--------------------------------------------        return c;    }

MIME类型
怎么自定义类型?
写法有什么规定?

在增删改中都有
  getContext().getContentResolver().notifyChange(noteUri,null);
有什么用

我还有两个帖子没结
http://topic.csdn.net/u/20120703/09/34f730ae-d33d-4111-acc9-6a9dfcab92a5.html
http://topic.csdn.net/u/20120710/10/802d833a-f94d-40f1-9c39-d28663c92258.html

[解决办法]
1.mime不清楚,只知道一定要实现gettype来回会一个mime type.
2. notifyChange,这个是用来通知注册了ContentObserver的程序,数据库内容发生了变化。说白了,就是用来给监听数据库的程序发一个通知
[解决办法]
mime是类型,写法跟uri很相似,没有什么硬规定,只有约定俗成的
[解决办法]
这个是给action view用的,可以告诉系统,当前的app可以处理那些类型的内容
[解决办法]
可以告诉系统,当前的app可以处理那些类型的内容
[解决办法]
再次回收

热点排行