Intent的隱式啟動(dòng)匹配規(guī)則

Intent有隱式啟動(dòng)和顯示啟動(dòng)兩種方式:
顯示啟動(dòng)就是指明啟動(dòng)的組件名稱 XXX.class
Intent xianshiIntent = new Intent(this,Main5Activity.class);
startActivity(xianshiIntent);

隱式啟動(dòng)就是通過在AndroidMainfest.xml中配置Activity的Intent-filter來控制啟動(dòng)
intent-filter中有三種參數(shù):action,category,data三種參數(shù),我通過不同的組合來觀察三種參數(shù)的匹配規(guī)則:
1 沒有intent-filter :略 根本不會(huì)有反應(yīng)
2 寫了intent-filter但是內(nèi)部不寫參數(shù) :我的編譯器無法通過編譯
3 寫了intent-filter只寫參數(shù)action

    <activity android:name='.Main2Activity'>
        <intent-filter>
            <action android:name='com.pczhu.custom.action'/>
        </intent-filter>
    </activity>

報(bào)錯(cuò) android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.pczhu.custom.action }

4 action和category參數(shù)都添加:

    <activity android:name=".Main2Activity">
        <intent-filter>
            <action android:name="com.pczhu.custom.action"/>

            <category android:name="android.intent.category.DEFAULT"/>

        </intent-filter>
    </activity>

代碼啟動(dòng):

            Intent intent = new Intent();
            intent.setAction("com.pczhu.custom.action");
            //intent會(huì)為你默認(rèn)加上android.intent.category.DEFAULT                
            startActivity(intent);

正確啟動(dòng)

5 action和category參數(shù)都添加但是category寫成別的:匹配失敗
6 action和category參數(shù)都添加,另外添加data:

        <activity android:name=".Main2Activity">
            <intent-filter>
            <action android:name="com.pczhu.custom.action"/>

            <category android:name="android.intent.category.APP_EMAIL"/>

            <data android:scheme="myscheme"/>
            </intent-filter>
       </activity>

代碼啟動(dòng)

            Intent intent = new Intent();
            intent.setAction("com.pczhu.custom.action");
            //                不加 無法啟動(dòng)
            //                intent.setData(Uri.parse("abc://abc"));//無法啟動(dòng)
            //                intent.setData(Uri.parse("myscheme"));//無法啟動(dòng)
            //                intent.setData(Uri.parse("myscheme://"));//可以啟動(dòng)
            //                intent.setData(Uri.parse("myscheme://abc"));//可以啟動(dòng)
            startActivity(intent);  

7 action和data參數(shù)都添加 category不加:不能啟動(dòng)
8 多個(gè)Activity匹配彈出選擇框如圖

device-2017-02-04-104227.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Intent簡(jiǎn)介Android中提供了Intent機(jī)制來協(xié)助應(yīng)用間的交互與通訊,Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的...
    Android_lml閱讀 990評(píng)論 1 7
  • 一本android開發(fā)程序員必讀的一本書,感謝任玉剛大佬的分享 一、Activity的生命周期全面分析 典型情況下...
    kongjn閱讀 557評(píng)論 1 3
  • 顯示Intent和隱式Intent Android中的Intent是一個(gè)非常重要且常用的類,可以用來在一個(gè)組件中啟...
    獅_子歌歌閱讀 1,215評(píng)論 0 2
  • 圖書項(xiàng)目wap端和后臺(tái)終于上線了,看著自己寫的代碼,有條不紊的跑在服務(wù)器上,用抽象的邏輯,托起一個(gè)個(gè)色彩斑斕的頁面...
    七弦桐語閱讀 373評(píng)論 0 0
  • 1. Accessibility是什么 在Apple的定義中,我們可以理解為:無障礙使用。所謂“無障礙使用”,是對(duì)...
    Wishqi閱讀 25,144評(píng)論 0 23