該filter聲明了改activity可以對一個筆記目錄做的事情. 它允許用戶查看或編輯該目錄(使用VIEW和EDIT action), 或者選取特定的筆記(使用PICK action). <data>元素的mimeType指定了這些action可以操作的數(shù)據(jù)類型. 它表明該activity可以從一個持有記事本數(shù)據(jù)的content provider(vnd.google.note)取得一個或多個數(shù)據(jù)項的Cursor(vnd.android.cursor.dir). 注意該filter提供了一個DEFAULT category. 這是因為 Context.startActivity() 和 Activity.startActivityForResult()方法將所有的intent都作為作為包含了DEFAULT category來處理, 只有兩個例外: 顯式指明目標(biāo)activity名稱的intent. 包含MAIN action 和LAUNCHER category的intent. 因此, 除了MAIN和LAUNCHER的filter之外, DEFAULT category是必須的. java代碼:
這個filter描述了該activity能夠在不需要知道目錄的情況下返回用戶選擇的一個筆記的能力. GET_CONTENT action和PICK action相類似. 在這兩者中, activity都返回用戶選擇的筆記的URI. (返回給調(diào)用startActivityForResult()來啟動NoteList activity的activity.) 在這里, 調(diào)用者指定了用戶選擇的數(shù)據(jù)類型而不是數(shù)據(jù)的目錄. 這個數(shù)據(jù)類型, vnd.android.cursor.item/vnd.google.note, 表示了該activity可以返回的數(shù)據(jù)類型 -- 一個筆記的URI. 從返回的URI, 調(diào)用者可以從持有筆記數(shù)據(jù)的content provider(vnd.google.note)得到一個項目(vnd.android.cursor.item)的Cursor. 也就是說, 對于PICK來說, 數(shù)據(jù)類型表示activity可以給用戶顯式的數(shù)據(jù)類型.對于GET_CONTENT filter, 它表示activity可以返回給調(diào)用者的數(shù)據(jù)類型. 下列intent可以被NoteList activity接受: action: android.intent.action.MAIN 不指定任何數(shù)據(jù)直接啟動activity. action: android.intent.action.MAIN category: android.intent.category.LAUNCHER 不指定任何數(shù)據(jù)直接啟動activity. 這是程序啟動器使用的intent. 所有使用該組合的filter的activity被加到啟動器中. action: android.intent.action.VIEW data: content://com.google.provider.NotePad/notes 要求activity顯示一個筆記列表,這個列表位于content://com.google.provider.NotePad/notes. 用戶可以瀏覽這個列表并獲取列表項的信息. action: android.intent.action.PICK data: content://com.google.provider.NotePad/notes 請求activity顯示content://com.google.provider.NotePad/notes下的筆記列表. 用戶可以選取一個筆記, activity將返回筆記的URI給啟動NoteList的activity. action: android.intent.action.GET_CONTENT data type: vnd.android.cursor.item/vnd.google.note 請求activity提供記事本數(shù)據(jù)的一項. 第二個activity, NoteEditor, 為用戶顯示一個筆記并允許他們編輯它. 它可以做以下兩件事: java代碼:
這個activity的主要目的是使用戶編輯一個筆記--VIEW或者EDIT一個筆記. (在category中,EDIT_NOTE是EDIT的同義詞.) intent包含匹配MIME類型vnd.android.cursor.item/vnd.google.note的URI--也就是某一個特定的筆記 的URI. 它一般來說是NoteList activity中的PICK或者GET_CONTENT action返回的.像以前一樣,該filter列出了DEFAULT category. java代碼:
該activity的第二個目的是使用戶能夠創(chuàng)建一個新的筆記, 并插入到已存在的筆記目錄中. 該intent包含了匹配vnd.android.cursor.dir/vnd.google.note的URI, 也就是筆 有了這些能力, NoteEditor就可以接受以下intent: action: android.intent.action.VIEW data: content://com.google.provider.NotePad/notes/ID 要求activity顯示給定ID的筆記. action: android.intent.action.EDIT data: content://com.google.provider.NotePad/notes/ID 要求activity顯示指定ID的筆記,然后讓用戶來編輯它. 如果用戶保存了更改,則activity更新該content provider的數(shù)據(jù). action: android.intent.action.INSERT data: content://com.google.provider.NotePad/notes 要求activity創(chuàng)建一個新的空筆記在content://com.google.provider.NotePad/notes, 并允許用戶編輯它, 如果用戶保存了更改,則該URI被返回給調(diào)用者. 最后一個activity, TitleEditor, 允許用戶編輯筆記的標(biāo)題. 這可以通過直接調(diào)用activity(在intent中設(shè)置組件名稱)的方式來實現(xiàn). 但是這里我們用這個機(jī)會來展示如何在已有數(shù)據(jù)上進(jìn)行另外的操作 java代碼:
|
|