Android 隱式意圖

一、隱式意圖介紹

顯式意圖

Intent intent = new Intent();
intent.setClass(this,Other.class);//此句表示顯式意圖,因?yàn)槊鞔_設(shè)置激活對(duì)象為Other類
startActivity(intent);

隱式意圖在intent過濾器中的匹配條件有:
(1) action
(2) category
(3) data:scheme、host、path、type
當(dāng)在程序中設(shè)置了這些激活組件的條件,程序就會(huì)去尋找最匹配的組件,但是注意:只要有一點(diǎn)不匹配,則就是不匹配;
比如:

Intent intent = new Intent();
intent.setAction("a");//此句只是指定了Action
startActivity(intent);//尋找最匹配的組件激活,內(nèi)部會(huì)調(diào)用intent.addCategory("android.intent.category.DEFAULT");

二、隱式Intent的核心代碼

首先是在AndroidManifest.xml中為某個(gè)Activity設(shè)置意圖過濾器:

<intent-filter>
<action android:name="...."/>
<category android:name="...."/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="..." android:host="..." android:path="/..." android:type="..."/>
</intent-filter>

以上設(shè)置是設(shè)置Activity本身的屬性,接下來在程序中要設(shè)置的是我們要尋找時(shí)匹配的條件:

Intent intent = new Intent();
intent.setAction("....");
intent.addCategory("....");
intent.setData(Uri.parse("...."));//設(shè)置data的scheme、host、path條件
intent.setDataAndType(Uri.parse(""),String type);//同時(shí)設(shè)置data的scheme、host、path、type條件
startActivity(intent);//調(diào)用intent.addCategory("android.intent.category.DEFAULT");

三、示例說明

情況一

<intent-filter>
<action android:name="com.babybus_lion.action" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.babybus_lion.category" />
<data
android:host="[www.babybus_lion.com](https://link.jianshu.com?t=http://www.babybus_lion.com)"
android:scheme="babybus_lion"/>
</intent-filter>

代碼為:

Intent intent = new Intent();
intent.setAction("com.babybus_lion.action");
intent.addCategory("com.babybus_lion.category");
intent.setData(uri));
startActivity(intent); //此方法中調(diào)用intent.addCategory("android.intent.category.DEFAULT");

情況二
在<data>中多了一個(gè)android:mimeType="text/*",此時(shí)不能使用intent.setData,而要使用intent.setDataAndType();

<intent-filter>
<action android:name="com.babybus_lion.action" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.babybus_lion.category" />
<data
android:host="[www.babybus_lion.com](https://link.jianshu.com?t=http://www.babybus_lion.com)"
android:scheme="babybus_lion" android:mimeType="text/*"/>
</intent-filter>

代碼為:

Intent intent = new Intent();
intent.setAction("com.babybus_lion.action");
intent.addCategory("com.babybus_lion.category");
intent.setDataAndType(uri,"text/*");
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、隱式意圖介紹 顯式意圖我們前面已經(jīng)提到,形如:Intent intent = new Intent();int...
    babybus_hentai閱讀 9,626評(píng)論 0 2
  • Intent組件雖然不是四大組件,但卻是連接四大組件的橋梁,學(xué)習(xí)好這個(gè)知識(shí),也非常的重要。 一、什么是Intent...
    困惑困惑困惑閱讀 1,737評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,346評(píng)論 25 708
  • 第一種情況:夫妻宮位置低陷、肉少皮薄,無論男女 1、婚姻生活易生障礙、不易協(xié)調(diào)。 2、婚姻有問題須防止離婚。 第二...
    運(yùn)安閣閣主閱讀 917評(píng)論 0 0
  • 嗨,親愛的孩子,我可能見不到你了, 你那么可愛,那么完美, 看到你讓我感到快樂,想起你讓我忘記憂傷, 這個(gè)世界有多...
    釋迦干屎橛閱讀 248評(píng)論 0 0

友情鏈接更多精彩內(nèi)容