2011年10月11日 星期二

Intent (3) - Android 新手學習筆記

前兩篇介紹了元件傳遞 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 新手學習筆記

沒有留言:

張貼留言

廣告訊息會被我刪除

Related Posts with Thumbnails