初学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可以处理那些类型的内容
[解决办法]
再次回收