前兩篇介紹了元件傳遞 Intent 的方法、Intent 可以包含的資訊、以及系統如何找到適合的元件
下面我們再來看看一些常用的用法
== Common cases ==
由上面的原則可以得到一些常用的使用方法
<data android:mimeType="image/*" />
上面的語法表示這個元件可以處理本機的任何圖檔
<data android:scheme="http" android:type="video/*" />
而這一個語法則表示這個元件可以處理網路上的任何影片
註:瀏覽器的運作程序是,當使用者在網頁上點了一個網址,如果這個網址的內容是網頁,它就會直接呈現它,如果不是,則會將資訊包裝成 Intent 丟出來,讓可處理的應用程式來處理它,而如果沒有任何應用程式能處理它,就會交由 download manager 來下載資料,下載後,由於變成本機的檔案,故可能就有其他的應用程式(例如只有指定 mimeType)可以來處理這個檔案了
另一個常用的設定是
<intent-filter . . . >
<action android:name="code android.intent.action.MAIN" />
<category android:name="code android.intent.category.LAUNCHER" />
</intent-filter>
表示這個元件要放在應用程式清單中,讓使用者可以直接點選啟動它
== Using intent matching ==
在 android.content.pm.PackageManager 類別中有一些 query...() 的 method,可以得知有哪些元件可以處理我們指定的 Intent,例如
queryIntentActivities() 用來得知可處理指定 Intent 的 Activity
queryIntentServices() 用來得知可處理指定 Intent 的 Service
queryBroadcastReceivers() 用來得知可處理指定 Intent 的 BroadcastReceiver
這些 method 不會真的去執行該元件,只是列出清單而已
而 PackageManager 則可以透過 Context 的 getPackageManager() 來取得
Intent (1) - Android 新手學習筆記
Intent (2) - Android 新手學習筆記
沒有留言:
張貼留言
廣告訊息會被我刪除