日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Android Intent和Intent Filter詳解(五)

 wanwanstudy 2012-02-11
該filter聲明了改activity可以對(duì)一個(gè)筆記目錄做的事情. 它允許用戶(hù)查看或編輯該目錄(使用VIEW和EDIT action), 或者選取特定的筆記(使用PICK action).

       <data>元素的mimeType指定了這些action可以操作的數(shù)據(jù)類(lèi)型. 它表明該activity可以從一個(gè)持有記事本數(shù)據(jù)的content provider(vnd.google.note)取得一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)的Cursor(vnd.android.cursor.dir).

        注意該filter提供了一個(gè)DEFAULT category. 這是因?yàn)?Context.startActivity() 和 Activity.startActivityForResult()方法將所有的intent都作為作為包含了DEFAULT category來(lái)處理, 只有兩個(gè)例外:

        顯式指明目標(biāo)activity名稱(chēng)的intent.
        包含MAIN action 和LAUNCHER category的intent.
        因此, 除了MAIN和LAUNCHER的filter之外, DEFAULT category是必須的.

java代碼:
  1. <intent-filter>
  2. <action android:name="android.intent.action.GET_CONTENT" />
  3. <category android:name="android.intent.category.DEFAULT" />
  4. <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
  5. </intent-filter>
復(fù)制代碼

       這個(gè)filter描述了該activity能夠在不需要知道目錄的情況下返回用戶(hù)選擇的一個(gè)筆記的能力. GET_CONTENT action和PICK action相類(lèi)似. 在這兩者中, activity都返回用戶(hù)選擇的筆記的URI. (返回給調(diào)用startActivityForResult()來(lái)啟動(dòng)NoteList activity的activity.) 在這里, 調(diào)用者指定了用戶(hù)選擇的數(shù)據(jù)類(lèi)型而不是數(shù)據(jù)的目錄.

        這個(gè)數(shù)據(jù)類(lèi)型, vnd.android.cursor.item/vnd.google.note, 表示了該activity可以返回的數(shù)據(jù)類(lèi)型 -- 一個(gè)筆記的URI. 從返回的URI, 調(diào)用者可以從持有筆記數(shù)據(jù)的content provider(vnd.google.note)得到一個(gè)項(xiàng)目(vnd.android.cursor.item)的Cursor.

         也就是說(shuō), 對(duì)于PICK來(lái)說(shuō), 數(shù)據(jù)類(lèi)型表示activity可以給用戶(hù)顯式的數(shù)據(jù)類(lèi)型.對(duì)于GET_CONTENT filter, 它表示activity可以返回給調(diào)用者的數(shù)據(jù)類(lèi)型.

         下列intent可以被NoteList activity接受:

         action: android.intent.action.MAIN
         不指定任何數(shù)據(jù)直接啟動(dòng)activity.
         action: android.intent.action.MAIN
         category: android.intent.category.LAUNCHER

         不指定任何數(shù)據(jù)直接啟動(dòng)activity. 這是程序啟動(dòng)器使用的intent. 所有使用該組合的filter的activity被加到啟動(dòng)器中.
         action: android.intent.action.VIEW
         data: content://com.google.provider.NotePad/notes

         要求activity顯示一個(gè)筆記列表,這個(gè)列表位于content://com.google.provider.NotePad/notes. 用戶(hù)可以瀏覽這個(gè)列表并獲取列表項(xiàng)的信息.

        action: android.intent.action.PICK
        data: content://com.google.provider.NotePad/notes

        請(qǐng)求activity顯示content://com.google.provider.NotePad/notes下的筆記列表. 用戶(hù)可以選取一個(gè)筆記, activity將返回筆記的URI給啟動(dòng)NoteList的activity.

        action: android.intent.action.GET_CONTENT
        data type: vnd.android.cursor.item/vnd.google.note

        請(qǐng)求activity提供記事本數(shù)據(jù)的一項(xiàng).

        第二個(gè)activity, NoteEditor, 為用戶(hù)顯示一個(gè)筆記并允許他們編輯它. 它可以做以下兩件事:

java代碼:
  1. <intent-filter android:label="@string/resolve_edit">
  2. <action android:name="android.intent.action.VIEW" />
  3. <action android:name="android.intent.action.EDIT" />
  4. <action android:name="com.android.notepad.action.EDIT_NOTE" />
  5. <category android:name="android.intent.category.DEFAULT" />
  6. <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
  7. </intent-filter>
復(fù)制代碼

        這個(gè)activity的主要目的是使用戶(hù)編輯一個(gè)筆記--VIEW或者EDIT一個(gè)筆記. (在category中,EDIT_NOTE是EDIT的同義詞.) intent包含匹配MIME類(lèi)型vnd.android.cursor.item/vnd.google.note的URI--也就是某一個(gè)特定的筆記 的URI. 它一般來(lái)說(shuō)是NoteList activity中的PICK或者GET_CONTENT action返回的.像以前一樣,該filter列出了DEFAULT category.

java代碼:
  1. <intent-filter>
  2. <action android:name="android.intent.action.INSERT" />
  3. <category android:name="android.intent.category.DEFAULT" />
  4. <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
  5. </intent-filter>
復(fù)制代碼

        該activity的第二個(gè)目的是使用戶(hù)能夠創(chuàng)建一個(gè)新的筆記, 并插入到已存在的筆記目錄中. 該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的筆記,然后讓用戶(hù)來(lái)編輯它. 如果用戶(hù)保存了更改,則activity更新該content provider的數(shù)據(jù).
         action: android.intent.action.INSERT
         data: content://com.google.provider.NotePad/notes

         要求activity創(chuàng)建一個(gè)新的空筆記在content://com.google.provider.NotePad/notes, 并允許用戶(hù)編輯它, 如果用戶(hù)保存了更改,則該URI被返回給調(diào)用者.

         最后一個(gè)activity, TitleEditor, 允許用戶(hù)編輯筆記的標(biāo)題. 這可以通過(guò)直接調(diào)用activity(在intent中設(shè)置組件名稱(chēng))的方式來(lái)實(shí)現(xiàn). 但是這里我們用這個(gè)機(jī)會(huì)來(lái)展示如何在已有數(shù)據(jù)上進(jìn)行另外的操作

java代碼:
  1. <intent-filter android:label="@string/resolve_title">
  2. <action android:name="com.android.notepad.action.EDIT_TITLE" />
  3. <category android:name="android.intent.category.DEFAULT" />
  4. <category android:name="android.intent.category.ALTERNATIVE" />
  5. <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
  6. <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
  7. </intent-filter>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多