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  红色的地方写的内容有什么限制为什么?
--------------------------------------------------------------------------------
                long rowId = db.insert(databaseHelper.DB_TABLE, table.KEY_NAME,
                        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);
--------------------------------------------------------------------------------
//这句的作用是什么?
        c.setNotificationUri(getContext().getContentResolver(), uri);
--------------------------------------------------------------------------------
        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.   

    1.mime不清楚,只知道一定要实现gettype来回会一个mime type.
    2. notifyChange,这个是用来通知注册了ContentObserver的程序,数据库内容发生了变化。说白了,就是用来给监听数据库的程序发一个通知
      

  2.   

    2如果没写notifyChange会不会数据就不会更新?
      

  3.   

    mime是类型,写法跟uri很相似,没有什么硬规定,只有约定俗成的
      

  4.   

    我在Manifest.xml 中看到
    <intent-filter>
    <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
    </intent-filter>
    <intent-filter>
    <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
    </intent-filter>
    这是什么意思有什么作用?
      

  5.   

    这个是给action view用的,可以告诉系统,当前的app可以处理那些类型的内容
      

  6.   

    比如下面:     
       Intent i = new Intent();
            i.setAction(Intent.ACTION_VIEW);
            Uri uri = Uri.parse("file:///mnt/sdcard/11.mp3");
            i.setDataAndType(uri, "audio/mpeg");
      

  7.   

    可以告诉系统,当前的app可以处理那些类型的内容
      

  8.   

    帮你顶下,懒得去找源码,在
    http://download.csdn.net/detail/long33long/4415566
    这个本书中讲的很清楚的
      

  9.   

    那个没写notitychange好像也可以更新吧
      

  10.   

    谁注册了contentovserver给谁,去看看类似的资料吧
      

  11.   

    这个问题已经解释了这么多了,你直接看apidemo不就行了啊,然后debug一下,就知道了。没必要这么反复的,方法都说了,唉
      

  12.   

    其他的问题
    我不管了
    求大神写个MIME的Demo
    注释多一点 内容详细一点img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]
      

  13.   

    content 当然要声明配置一下,不然系统就不能查找到你!
      

  14.   

    notitychange作用大概就是个广播,contentObserve是广播接收器,不知道具体实现原理是否一样,当功能类似