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)
     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();
        }
     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);
        }
原文地址:https://www.cnblogs.com/deman/p/4211538.html