Android四大组件之contentProvider(续)
1、content provider与网页有何相似之处?
contentProvider使用authority 同网站的域名类似
contentProvider还可以提供类似于网站的索引方式
content://media/external/images/#
2、你能列出几个内置的content provider吗?
imagestore,constans,media, message,
3、通过adb工具你可以做些什么?
可以获取文件和操作手机
4、什么是AVD?
android vertual device
5、你如何列出可用的AVDs?
android list avds
6、Android中的一些有用的命令行工具名称是什么?
adb,ddms
7、content provider对应的数据库在什么位置?
在创建项目的data/data下面
8、浏览一个数据库的好的方法是什么?
Cursor方式
9、Content provider的authority属性是什么?
就是用来索引的,类似于wen的域名
10、content provider的authority可以缩写吗?
不可以
11、MIME类型是什么?其如何与content provider相联系?
是用来验证的类型。1)就是定义后可以使系统认为你的返回时安全的
2)就是可以设置必要的data在androidmanifest.xml的时候,这样发的intent就可以用到这个类型了。
this.startActivity(new Intent(action, uri));
Uri可以是数据库的某条记录,然后,这个时候需要先匹配contentprovider的gettype类型。
12、程序员如何找到与某content provider通信的URIs?
13、如何通过URIs来访问数据?
mcontentresolver
14、如何为content provider的query语句传入where语句?
mContentResolver.query(SearchMetaData.CONTENT_URI,
projection, selection, selectionArg, null)
projection, selection, selectionArg, null)
15、如何遍历一个cursor?
Cursor cursor = mContentResolver.query(SearchMetaData.CONTENT_URI,
projection, selection, selectionArg, null);
if (cursor != null) {
while (cursor.moveToNext()) {
// int persionId=
// cursor.getInt(cursor.getColumnIndex(SearchMetaData.PERSIOD_ID));
String path = cursor.getString(cursor
.getColumnIndex(SearchMetaData.BITMAP_PATH));
if (!mPathHash.contains(path)) {
mPathHash.add(path);// we not add same path twice
}
}
cursor.close();
}
projection, selection, selectionArg, null);
if (cursor != null) {
while (cursor.moveToNext()) {
// int persionId=
// cursor.getInt(cursor.getColumnIndex(SearchMetaData.PERSIOD_ID));
String path = cursor.getString(cursor
.getColumnIndex(SearchMetaData.BITMAP_PATH));
if (!mPathHash.contains(path)) {
mPathHash.add(path);// we not add same path twice
}
}
cursor.close();
}
16、Content Values扮演一个什么角色?
传入数据库的数据,一条记录就是一个values
17、ContentResolver类扮演什么角色?
上层操作数据库的媒介
18、在Content Provider中存储一个文件的协议是什么?
通过BLOB的方式可以直接存储大文件,图片,MP3等。
getInputStream()和getOutpurStream()来读写二进制信息。
19、UriMatcher如何工作,如何使用UriMatcher?
static { URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH); URI_MATCHER.addURI(AUTHORITY, SearchMetaData.TABLE_NAME, SEARCH_COLLECTION_URI_INDICATER); URI_MATCHER.addURI(AUTHORITY, SearchMetaData.TABLE_NAME + "/#", SEARCH_SINGAL_URI_INDICATER); URI_MATCHER.addURI(AUTHORITY, ApplicationsMetaData.TABLE_NAME, APPLICATIONS_COLLECTION_URI_INDICATER); URI_MATCHER.addURI(AUTHORITY, ApplicationsMetaData.TABLE_NAME + "/#", APPLICATIONS_SINGAL_URI_INDICATER); }
int op = URI_MATCHER.match(uri); String idapp = ""; switch (op) { case SEARCH_COLLECTION_URI_INDICATER: count = db.delete(SearchMetaData.TABLE_NAME, selection, selectionArgs); break; case SEARCH_SINGAL_URI_INDICATER: String id = uri.getPathSegments().get(1); count = db.delete(SearchMetaData.TABLE_NAME, SearchMetaData._ID + "=" + id + (!TextUtils.isEmpty(selection) ? "AND(" + selection + ')' : ""), selectionArgs); break; case APPLICATIONS_SINGAL_URI_INDICATER: idapp = uri.getPathSegments().get(1); case APPLICATIONS_COLLECTION_URI_INDICATER: ApplicationsMetaData .delete(db, op, idapp, selection, selectionArgs); break; default: throw new IllegalArgumentException("Unknown Uri " + uri); }
posted on 2015-01-08 17:34 Joyfulmath 阅读(230) 评论(0) 编辑 收藏 举报