使用 AIR 執行階段和作業系統資訊

Adobe AIR 1.0 以及更新的版本

本章節將討論 AIR 應用程式管理作業系統檔案關聯、偵測使用者活動,以及取得 Adobe® AIR® 執行階段相關資訊的方法。

管理檔案關聯

您必須在應用程式描述器中宣告應用程式和檔案類型之間的關聯。在安裝期間,AIR 應用程式的安裝程式會使 AIR 應用程式與每一個宣告的檔案類型產生關聯,除非有其它應用程式為預設的開啟應用程式,否則會讓 AIR 應用程式做為預設的開啟應用程式。AIR 應用程式安裝程序不會覆寫現有的檔案類型關聯。若要從其它應用程式接管該項關聯,請在執行階段呼叫 NativeApplication.setAsDefaultApplication() 方法。

確認所需的檔案關聯在您的應用程式啟動時都會就定位,是一種較好的作法。因為 AIR 應用程式的安裝程式不會覆寫現有的檔案關聯,而且使用者系統中的檔案關聯隨時都可能改變。當其它應用程式具有目前的檔案關聯時,事先詢問使用者後再接管現有的關聯也是有禮貌的作法。

下列 NativeApplication 類別的方法可以讓應用程式管理檔案關聯,每一個方法都會採用五種類型的副檔名做為參數:

方法

說明

isSetAsDefaultApplication()

如果 AIR 應用程式目前與指定的檔案類型有關聯,則傳回 true。

setAsDefaultApplication()

建立 AIR 應用程式和檔案類型的開啟動作之間的關聯。

removeAsDefaultApplication()

移除 AIR 應用程式和檔案類型之間的關聯。

getDefaultApplication()

報告目前與檔案類型有關聯之應用程式的路徑。

AIR 只能管理原本在應用程式描述器中宣告的檔案類型關聯。您無法取得未經宣告的檔案類型關聯,就算使用者已經手動建立檔案類型和應用程式之間的關聯也一樣。如果呼叫任何檔案類型管理方法時,提供的副檔名屬於應用程式描述器中未宣告的檔案類型,應用程式就會擲出執行階段例外。

取得執行階段版本的修補程式層級

NativeApplication 物件具有 runtimeVersion 屬性,這個屬性是應用程式在其中執行的執行階段版本 (字串,例如 "1.0.5" )。NativeApplication 物件也具有 runtimePatchLevel 屬性,這個屬性是執行階段的修補程式層級 (數字,例如 2960)。下列程式碼會使用這些屬性:

trace(NativeApplication.nativeApplication.runtimeVersion); 
trace(NativeApplication.nativeApplication.runtimePatchLevel); 

偵測 AIR 功能

對於已合併至 Adobe AIR 應用程式的檔案, Security.sandboxType 屬性會設定為 Security.APPLICATION 常數所定義的值。您可以根據 Adobe AIR 安全執行程序中是否有檔案載入內容 (此內容不一定包含 AIR 專屬 API),如下列程式碼所示範:

if (Security.sandboxType == Security.APPLICATION) 
{ 
    // Load SWF that contains AIR APIs 
} 
else 
{ 
    // Load SWF that does not contain AIR APIs 
} 

未與 AIR 應用程式一併安裝的所有資源都會指定給與 Adobe® Flash® Player 在網頁瀏覽器中所指定的相同安全執行程序。遠端資源會根據其來源網域放置於不同的安全執行程序中;而本機資源則會放置於「具有網路連線的本機」、「具有檔案系統的本機」或「本機信任」的安全執行程序中。

您可以檢查 Capabilities.playerType 是否設定為 "Desktop" ,以得知是否要在執行階段中 (而且不是在於瀏覽器中執行的 Flash Player 內) 執行內容。

如需詳細資訊,請參閱: AIR 安全性

追蹤使用者狀態

NativeApplication 物件會傳送兩個事件,協助您偵測使用者是否正在使用電腦。在 NativeApplication.idleThreshold 屬性設定的時間間隔內,如果沒有偵測到任何滑鼠或鍵盤活動,NativeApplication 就會傳送 userIdle 事件。當下次發生鍵盤或滑鼠輸入活動時,NativeApplication 物件就會傳送 userPresent 事件。 idleThreshold 時間間隔是以秒為單位來量測,預設值為 300 (5 分鐘)。您也可以透過 NativeApplication.nativeApplication.lastUserInput 屬性,取得上次使用者輸入活動的秒數。

下列幾行程式碼會將閒置臨界值設定為 2 分鐘,並且偵聽 userIdle userPresent 事件:

NativeApplication.nativeApplication.idleThreshold = 120; 
NativeApplication.nativeApplication.addEventListener(Event.USER_IDLE, function(event:Event) { 
    trace("Idle"); 
}); 
NativeApplication.nativeApplication.addEventListener(Event.USER_PRESENT, function(event:Event) { 
    trace("Present"); 
}); 
備註: 在任兩個 userPresent 事件之間,只會傳送一個 userIdle 事件。