<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                #### Activity調用方式 * 顯示調用: 明確指定被啟動對象的組件信息,包括包名和類名 * 隱式調用: 不需要明確指定組件信息,需要Intent能夠匹配目標組件中的IntentFilter中所設置的過濾信息。 二者共存,以顯示調用為主。顯示調用很簡單,這里簡述一下隱式調用,隱式調用 需要intent能夠匹配目標組件的IntentFilter 中所設置的過濾信息, 如果不匹配將無法啟動目標Activity。IntentFilter中的過濾信息有action、category、data。 關于intent和IntentFilter的詳細描述,可參考這里[意圖(Intent)](http://www.hmoore.net/alex_wsc/android/432707) #### 匹配規則 IntentFilter中的過濾信息有action、category、data。 只有一個Intent同時匹配action類別、category類別、data類別才能成功啟動目標Activity。 一個Activity可以有多個intent-filter,一個Intent只要能匹配任何一組intent-filter即可成功啟動對應的Activity。 1. **action** action是一個字符串,匹配是指與action的字符串完全一樣,區分大小寫,大小寫不同字符串相同的action會匹配失敗。 一個intent-filter可以有多個aciton,只要Intent中的action能夠和任何一個action相同即可成功匹配。 Intent中如果沒有指定action,那么匹配失敗。 action的匹配要求Intent中的action存在且必須和過濾規則中的其中一個action相同 2. **category** category是一個字符串。 Intent可以沒有category,但是如果你一旦有category,不管有幾個,每個都必須與intent-filter中的其中一個category相同。 系統在 startActivity 和 startActivityForResult 的時候,會默認為Intent加上 android.intent.category.DEFAULT 這個category,所以為了我們的activity能夠接收隱式調用,就必須在intent-filter中加上 android.intent.category.DEFAULT 這個category。 3. data data的匹配規則與action一樣,如果intent-filter中定義了data,那么Intent中必須要定義可匹配的data。 intent-filter中data的語法: ``` <data android:scheme="string" android:host="string" android:port="string" android:path="string" android:pathPattern="string" android:pathPrefix="string" android:mimeType="string"/> ``` Intent中的data有兩部分組成:mimeType和URI。mimeType是指媒體類型,比如 image/jpeg、audio/mpeg4-generic和video/等,可以表示圖片、文本、視頻等不同的媒 體格式。 URI的結構: `<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]` 示例: ``` content://com.example.project:200/folder/subfolder/etc http://www.baidu.com:80/search/info ``` **scheme**:URI的模式,比如http、file、content等,默認值是 file 。 **host**:URI的主機名 **port**:URI的端口號 **path、pathPattern和pathPrefix**:這三個參數描述路徑信息。 path、pathPattern可以表示完整的路徑信息,其中pathPattern可以包含通配符 * ,表示0個或者多個任意字符。 pathPrefix只表示路徑的前綴信息。 過濾規則的uri為空時,有默認值content和file,因此intent設置uri的scheme部分必須為content或file。 Intent指定data時,必須調用 setDataAndType 方法, setData 和 setType 會清除另一方的值。 對于service和BroadcastReceiver也是同樣的匹配規則,不過對于service最好使用顯式調用。 **隱式調用需注意** * 當通過隱式調用啟動Activity時,沒找到對應的Activity系統就會拋出 android.content.ActivityNotFoundException 異常,所以需要判斷是否有Activity能夠匹配我們的隱式Intent。 * 判斷方法有2種 * 采用 PackageManager 的 resloveActivity 方法或Intent 的 resloveActivity 方法 ,如果它們找不到匹配的Activity就會返回null,通過判斷返回值可以避免上述錯誤 * PackageManager還提供了queryIntentActivityies方法,來返回所有成功匹配的Activity信息 ``` public abstract List<ResolveInfo> queryIntentActivityies(Intent intent,int flags); public abstract ResolveInfo resloveActivity(Intent intent,int flags); ``` 以上的第二個參數使用 MATCH_DEFAULT_ONLY ,這個標志位的含義是僅僅匹配那些在 intent-filter中聲明了 android.intent.category.DEFAULT 這個category的Activity。如果不用這個標記位,就會把不含這個category的Activity匹配出來了,從而導致startActivity失敗,因為不含DEFAULT這個category的Activity是無法接受隱式Intent的。 * 下面的action和category比較重要,它們用來表明這是一個入口Activity,并且會出現在系統的應用列表中,二者缺一不可。 ``` <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看