精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Android Intent和Intent Filter詳解(二)
Data

        需要操作的數據的URI和它的MIME(多用途互聯網郵件擴展,Multipurpose Internet Mail Extensions)類型. 例如, 如果action為ACTION_EDIT, 那么Data將包含待編輯的數據URI. 如果action為ACTION_CALL, Data將為tel:電話號碼的URI. 如果action為ACTION_VIEW, 則Data為http:網絡地址的URI.

        當將一個intent和一個組件相匹配時, 除了URI外數據類型也很重要. 例如, 一個顯示圖片的程序不應該用來處理聲音文件.

        數據類型常常可以從URI推斷, 特別是content:URI, 它表示該數據屬于一個content provider. 但數據類型也可以被intent對象顯示聲明. setData()方法設置URI, 而setType()方法指定MIME類型, setDataAndType()設置數據URI和MIME類型. 它們可以使用getData()和getType()來讀取.

        Category

        一個字符串,包含了關于處理該intent的組件的種類的信息. 一個intent對象可以有任意個category. intent類定義了許多category常數, 例如:

常量含義
CATEGORY_BROWSABLE目標activity可以使用瀏覽器來顯示-例如圖片或電子郵件消息.
CATEGORY_GADGET該activity可以被包含在另外一個裝載小工具的activity中.
CATEGORY_HOME該activity顯示主屏幕,也就是用戶按下Home鍵看到的界面.
CATEGORY_LAUNCHER該activity可以作為一個任務的第一個activity,并且列在應用程序啟動器中.
CATEGORY_PREFERENCE該activity是一個選項面板.


        addCategory()方法為一個intent對象增加一個category, removeCategory刪除一個category, getCategories()獲取intent所有的category.

        Extras

        為鍵值對形式的附加信息. 例如ACTION_TIMEZONE_CHANGED的intent有一個"time-zone"附加信息來指明新的時區, 而ACTION_HEADSET_PLUG有一個"state"附加信息來指示耳機是被插入還是被拔出.
intent對象有一系列put...()和set...()方法來設定和獲取附加信息. 這些方法和Bundle對象很像. 事實上附加信息可以使用putExtras()和getExtras()作為Bundle來讀和寫.

        Flags

        各種標志. 很多標志指示android系統如何啟動一個activity(例如該activity屬于哪個任務)和啟動后如何處理它(例如, 它是否屬于最近activity列表中).

         android系統和應用程序使用intent對象來送出系統廣播和激活系統定義的組件.

         Intent Resolution Intent解析

         intent有兩種:

         顯式intent使用名字來指定目標組件. 由于組件名稱一般不會被其它開發者所熟知, 這種intent一般用于應用程序內部消息-- 例如一個activity啟動一個附屬的service或者另一個activity.

         隱式intent不指定目標的名稱. 一般用于啟動其它應用程序的組件.

         Android將顯式intent發送給指定的類. intent對象中名字唯一決定接受intent的對象.對于隱式intent, android系統必須找到最合適的組件來處理它. 它比較intent的內容和intent filter.  intent filter是組件的一個相關結構, 表示其接受intent的能力. android系統根據intent filter打開可以接受intent的組件. 如果一個組件沒有intent filter, 那么它只能接受顯式intent. 如果有, 則能同時接受二者.當一個intent和intent filter比較時, 只考慮三個屬性: action, data, category.extra和flag在intent解析中沒有用.

          Intent filters

          activity, service和broadcast receiver可以有多個intent filter來告知系統它們能接受什么樣的隱式intent. intent filter的名字很形象: 它過濾掉不想接受的intent, 留下想接受的intent. 顯式intent無視intent filter.一個組件對能做的每件事有單獨的filter. 例如, 記事本程序的NoteEditor activity有兩個filter -- 一個啟動并顯示一個特定的記錄給用戶查看或編輯, 另一個啟動一個空的記錄給用戶編輯.

          Filters and security Filter和安全

          一個intent filter不一定安全可靠. 一個應用程序可以讓它的某個組件去接受隱式intent, 但是它沒法防止這個組件接受顯示intent. 其它的程序總是可以使用自定義的數據加上顯式的程序名稱來調用該組件.

          一個intent filter是IntentFilter類的實例, 但是它一般不出現在代碼中,而是出現在android Manifest文件中, 以<intent-filter>的形式. (有一個例外是broadcast receiver的intent filter是使用 Context.registerReceiver()來動態設定的, 其intent filter也是在代碼中創建的.)

          一個filter有action, data, category等字段. 一個隱式intent為了能被某個intent filter接受, 必須通過3個測試. 一個intent為了被某個組件接受, 則必須通過它所有的intent filter中的一個.

       Action 測試

java代碼:
  1. <intent-filter >
  2. <action android:name="com.example.project.SHOW_CURRENT" />
  3. <action android:name="com.example.project.SHOW_RECENT" />
  4. <action android:name="com.example.project.SHOW_PENDING" />
  5. . . .
  6. </intent-filter>
復制代碼
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
什么是Intent?
Inter和Inter Fiters
Android系列教程之十:Intents and Intent Filters(一) Android有四大核心組件 Activity、Service、Broadcast Receiver和Con
Intent和IntentFilter詳解
Intent以及IntentFilter詳解
1.Intent
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 沾益县| 格尔木市| 叶城县| 宜州市| 白城市| 若羌县| 驻马店市| 岳普湖县| 临江市| 太原市| 凤山县| 三门峡市| 襄城县| 那坡县| 福鼎市| 琼结县| 绥宁县| 上高县| 兴业县| 石柱| 山阳县| 曲水县| 修武县| 彭阳县| 华安县| 鲁甸县| 衡阳市| 巧家县| 新野县| 信阳市| 察雅县| 常州市| 满城县| 利津县| 卢龙县| 夏津县| 五莲县| 工布江达县| 云和县| 盐山县| 乌苏市|