亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

深入學習Android中的Intent

2020-04-11 11:11:44
字體:
來源:轉載
供稿:網友

Intent提供了一種通用的消息系統,它允許在你的應用程序見傳遞Intent來執行動作和產生事件,使用Intent可以激活Android應用的三種類型的核心組件:活動Activity、服務Service、廣播接受者Broadcast。

Intent又分為隱士意圖顯示意圖

顯示意圖:調用intent.setComponent()、intent.setClassName()或者intent.setClass()方法明確的制定組件名的Intent為顯示意圖,顯示意圖明確的制定要激活哪一個組件。

隱士意圖:沒有明確的制定組件的名稱;下邊是一個隱士意圖的案例

首先應該在清單文件中添加相應的intent-filter

<application    android:icon="@drawable/ic_launcher"    android:label="@string/app_name" >    <activity      android:label="@string/app_name"      android:name=".IntentActivity" >      <intent-filter >        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>    </activity>    <activity android:name=".OtherActivity" android:label="@string/windowtitle">      <intent-filter >        <action android:name="cn.itcast.zhangxx"/>        <action android:name="cn.itcast.laoli"/>        <category android:name="cn.itcast.category.java"/>         <category android:name="android.intent.category.DEFAULT"/>        <category android:name="cn.itcast.category.php"/>        <data android:scheme="itcast" android:host="www.itcast.cn" android:path="/liming"/>        <data android:mimeType="image/*"/>      </intent-filter>          </activity>  </application>

在MainActivity.java中

public void openActivity(View v){    /**     * (沒設數據參數的情況下)只要Intent中的Action和Category都出現在Intent-Filter中,就能與之匹配,否則匹配失敗     */    Intent intent = new Intent();//隱式意圖激活Activity    intent.setAction("cn.itcast.zhangxx");    intent.addCategory("cn.itcast.category.java");      // intent.setData(Uri.parse("itcast://www.itcast.cn/liming"));    // intent.setType("image/jpeg");    //根據Android的API可以知道    //This method automatically clears any data that was previously set (for example by setData(Uri)).     //也就是說如果設置了setData方法在設置setType方法的話,那么setType方法就會clers掉setData方法    //解決方案如下:    intent.setDataAndType(Uri.parse("itcast://www.itcast.cn/liming"), "image/jpeg");    startActivity(intent);//方法內部為Intent添加了android.intent.category.DEFAULT類別  }

如下是隱士意圖的匹配規則:

Intent Filter(意圖過濾器)其實就是用來匹配隱式Intent的,當一個意圖對象被一個意圖過濾器進行匹配測試時,只有三個方面會被參考到:動作、數據(URI以及數據類型)和類別。

動作測試(Action test)

一個意圖對象只能指定一個動作名稱,而一個過濾器可能列舉多個動作名稱。如果意圖對象或過濾器沒有指定任何動作,結果將如下:

  • • 如果過濾器沒有指定任何動作,那么將阻塞所有的意圖,因此所有的意圖都會測試失敗。沒有意圖能夠通過這個過濾器。
  • • 另一方面,只要過濾器包含至少一個動作,一個沒有指定動作的意圖對象自動通過這個測試

類別測試(Category test)

對于一個能夠通過類別匹配測試的意圖,意圖對象中的類別必須匹配過濾器中的類別。這個過濾器可以列舉另外的類別,但它不能遺漏在這個意圖中的任何類別。

原則上一個沒有類別的意圖對象應該總能夠通過匹配測試,而不管過濾器里有什么。大部分情況下這個是對的。但有一個例外,Android把所有傳給startActivity()的隱式意圖當作他們包含至少一個類別:”android.intent.category.DEFAULT” (CATEGORY_DEFAULT常量)。因此,想要接收隱式意圖的活動必須在它們的意圖過濾器中包含”android.intent.category.DEFAULT”。(帶”android.intent.action.MAIN”和”android.intent.category.LAUNCHER”設置的過濾器是例外)

數據測試(Data test)

當一個意圖對象中的URI被用來和一個過濾器中的URI比較時,比較的是URI的各個組成部分。例如,如果過濾器僅指定了一個scheme,所有該scheme的URIs都能夠和這個過濾器相匹配;如果過濾器指定了一個scheme、主機名但沒有路經部分,所有具有相同scheme和主機名的URIs都可以和這個過濾器相匹配,而不管它們的路經;如果過濾器指定了一個scheme、主機名和路經,只有具有相同scheme、主機名和路經的URIs才可以和這個過濾器相匹配。當然,一個過濾器中的路徑規格可以包含通配符,這樣只需要部分匹配即可。

數據測試同時比較意圖對象和過濾器中指定的URI和數據類型。

規則如下:

a. 一個既不包含URI也不包含數據類型的意圖對象僅在過濾器也同樣沒有指定任何URIs和數據類型的情況下才能通過測試。

b. 一個包含URI但沒有數據類型的意圖對象僅在它的URI和一個同樣沒有指定數據類型的過濾器里的URI匹配時才能通過測試。這通常發生在類似于mailto:和tel:這樣的URIs上:它們并不引用實際數據。

c. 一個包含數據類型但不包含URI的意圖對象僅在這個過濾器列舉了同樣的數據類型而且也沒有指定一個URI的情況下才能通過測試。

d. 一個同時包含URI和數據類型(或者可從URI推斷出數據類型)的意圖對象可以通過測試,如果它的類型和過濾器中列舉的類型相匹配的話。如果它的URI和這個過濾器中的一個URI相匹配或者它有一個內容content:或者文件file: URI而且這個過濾器沒有指定一個URI,那么它也能通過測試。換句話說,一個組件被假定為支持content:和file: 數據如果它的過濾器僅列舉了一個數據類型。

以上就是針對Android中的Intent詳細介紹,特別適合初學者學習,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品videos性欧美| 57pao国产精品一区| 欧美xxxx做受欧美.88| 国产午夜精品一区理论片飘花| 亚洲精品99久久久久中文字幕| 日韩精品免费在线观看| 国产在线精品一区免费香蕉| 97香蕉超级碰碰久久免费的优势| www.亚洲男人天堂| 国产香蕉精品视频一区二区三区| 有码中文亚洲精品| 国产精品欧美风情| 精品激情国产视频| 国产香蕉精品视频一区二区三区| 中文字幕日韩在线观看| 国产小视频91| 欧美性xxxxxxx| 日韩中文字幕在线| www欧美xxxx| 日本精品一区二区三区在线播放视频| 另类少妇人与禽zozz0性伦| 欧美老女人性视频| 欧美电影在线观看网站| 大伊人狠狠躁夜夜躁av一区| 亚洲欧美在线第一页| 欧美一级大片视频| 欧美成人三级视频网站| 久久97精品久久久久久久不卡| 亚洲国产日韩欧美综合久久| 国产精品视频播放| 在线视频欧美性高潮| 成人乱人伦精品视频在线观看| 精品无人区乱码1区2区3区在线| 久久久久成人精品| 亚洲欧美国产另类| 欧美成人性生活| 精品国产一区二区三区久久久狼| 日韩欧美一区视频| 色伦专区97中文字幕| 国产成人精品久久二区二区| 国产成人在线视频| 久久99精品久久久久久琪琪| 午夜精品免费视频| 日韩国产中文字幕| 国产精品视频99| 亚洲精品日韩久久久| 色综合导航网站| 国产精品观看在线亚洲人成网| 91午夜理伦私人影院| 三级精品视频久久久久| 91久久国产婷婷一区二区| 国产在线观看91精品一区| 亚洲色图18p| 国产成人精品视| 日韩亚洲在线观看| 欧美多人乱p欧美4p久久| 国内精品视频一区| 欧美亚洲激情在线| 亚洲区中文字幕| 波霸ol色综合久久| 中文字幕国产日韩| 亚洲影视九九影院在线观看| 欧美性在线视频| 狠狠躁夜夜躁人人爽天天天天97| 性日韩欧美在线视频| 庆余年2免费日韩剧观看大牛| 国产精品7m视频| 欧美极品在线视频| 国产丝袜一区视频在线观看| 欧美一级电影在线| 日韩精品久久久久久福利| 91精品国产综合久久男男| 2018中文字幕一区二区三区| 日av在线播放中文不卡| 日韩中文字幕国产精品| 亚洲精品欧美一区二区三区| 日韩美女在线观看| 91社区国产高清| 亚洲自拍另类欧美丝袜| 欧美成年人视频| 91精品视频免费看| 羞羞色国产精品| 久久国产精品99国产精| 黄色91在线观看| 国产精品99久久久久久www| 欧美大尺度激情区在线播放| 中文字幕在线国产精品| 久久久国产视频| 久久久成人精品视频| 久久综合久久88| 亚洲国产成人精品久久| 国产丝袜高跟一区| 中文字幕日韩精品在线| 国产综合久久久久久| 69视频在线播放| 国产亚洲精品va在线观看| 国产精品永久免费视频| 国产盗摄xxxx视频xxx69| 日韩中文理论片| 国产精品一区二区三区久久久| 秋霞av国产精品一区| 久久视频这里只有精品| 国产精品免费久久久| 欧美中文字幕视频在线观看| 中文字幕欧美精品日韩中文字幕| 欧美激情极品视频| 最新国产精品拍自在线播放| 欧美激情免费观看| 欧美激情手机在线视频| 欧美大片欧美激情性色a∨久久| 国产一区二区三区视频免费| 久久久国产影院| 97免费在线视频| 日韩午夜在线视频| 亚洲女人天堂网| 国产美女高潮久久白浆| 亚洲美女喷白浆| 久久久久久久久久久亚洲| 国产成人精品视频在线观看| 国产午夜精品全部视频播放| 国产欧美日韩中文字幕| 日韩在线高清视频| 色哟哟网站入口亚洲精品| 国产精品久久久久久久久影视| 亚洲精品综合久久中文字幕| 欧美性xxxx18| 欧美另类极品videosbestfree| 国产成人精品电影久久久| 成人久久一区二区| 红桃av永久久久| 秋霞成人午夜鲁丝一区二区三区| 日韩亚洲欧美中文在线| 久久久精品视频成人| 欧美成人激情视频免费观看| 国产精品中文字幕在线观看| 久久艳片www.17c.com| 亚洲在线观看视频网站| 欧美日韩国产丝袜美女| 最新国产精品拍自在线播放| 久久中文字幕视频| 国产精品美女主播在线观看纯欲| 欧美视频中文在线看| 国产69精品99久久久久久宅男| 日韩亚洲欧美中文在线| 97在线免费观看视频| 色婷婷亚洲mv天堂mv在影片| 狠狠躁夜夜躁人人爽超碰91| 免费不卡在线观看av| 国产精品h在线观看| 久久国产精品久久国产精品| 久久99国产综合精品女同| 国产在线拍偷自揄拍精品| 日韩欧美在线中文字幕| 亚洲国产天堂久久综合网| 欧美丝袜一区二区三区| 影音先锋欧美在线资源| 欧美日韩精品在线| 欧美精品成人在线| 国产做受高潮69| 亚洲欧美日韩中文视频| 日韩的一区二区| 国产精品一区二区三区毛片淫片| 久久好看免费视频| 亚洲精品久久在线|