Want概述

2024-01-25 12:24 更新

Want的定義與用途

Want是對象間信息傳遞的載體,可以用于應(yīng)用組件間的信息傳遞。其使用場景之一是作為startAbility()的參數(shù),包含了指定的啟動目標(biāo)以及啟動時需攜帶的相關(guān)數(shù)據(jù),如bundleName和abilityName字段分別指明目標(biāo)Ability所在應(yīng)用的包名以及對應(yīng)包內(nèi)的Ability名稱。當(dāng)UIAbilityA啟動UIAbilityB并需要傳入一些數(shù)據(jù)給UIAbilityB時,Want可以作為一個載體將數(shù)據(jù)傳給UIAbilityB。

圖1 Want用法示意

Want的類型

  • 顯式Want:在啟動Ability時指定了abilityName和bundleName的Want稱為顯式Want。

    當(dāng)有明確處理請求的對象時,通過提供目標(biāo)Ability所在應(yīng)用的包名信息(bundleName),并在Want內(nèi)指定abilityName便可啟動目標(biāo)Ability。顯式Want通常用于在當(dāng)前應(yīng)用開發(fā)中啟動某個已知的Ability。參數(shù)說明參見Want參數(shù)說明。

    1. let wantInfo = {
    2. deviceId: '', // deviceId為空表示本設(shè)備
    3. bundleName: 'com.example.myapplication',
    4. abilityName: 'FuncAbility',
    5. }
  • 隱式Want:在啟動UIAbility時未指定abilityName的Want稱為隱式Want。

    當(dāng)請求處理的對象不明確時,希望在當(dāng)前應(yīng)用中使用其他應(yīng)用提供的某個能力(通過skills標(biāo)簽定義),而不關(guān)心提供該能力的具體應(yīng)用,可以使用隱式Want。例如使用隱式Want描述需要打開一個鏈接的請求,而不關(guān)心通過具體哪個應(yīng)用打開,系統(tǒng)將匹配聲明支持該請求的所有應(yīng)用。

    1. let wantInfo = {
    2. // uncomment line below if wish to implicitly query only in the specific bundle.
    3. // bundleName: 'com.example.myapplication',
    4. action: 'ohos.want.action.search',
    5. // entities can be omitted
    6. entities: [ 'entity.system.browsable' ],
    7. uri: 'https://www.test.com:8080/query/student',
    8. type: 'text/plain',
    9. };
    說明
    根據(jù)系統(tǒng)中待匹配Ability的匹配情況不同,使用隱式Want啟動Ability時會出現(xiàn)以下三種情況。
    • 未匹配到滿足條件的Ability:啟動失敗。
    • 匹配到一個滿足條件的Ability:直接啟動該Ability。
    • 匹配到多個滿足條件的Ability(UIAbility):彈出選擇框讓用戶選擇。

Want參數(shù)說明

名稱

讀寫屬性

類型

必填

描述

deviceId

只讀

string

表示目標(biāo)Ability所在設(shè)備ID。如果未設(shè)置該字段,則表明本設(shè)備。

bundleName

只讀

string

表示目標(biāo)Ability所在應(yīng)用名稱。

moduleName

只讀

string

表示目標(biāo)Ability所屬的模塊名稱。

abilityName

只讀

string

表示目標(biāo)Ability名稱。如果未設(shè)置該字段,則該Want為隱式。如果在Want中同時指定了bundleName,moduleName和abilityName,則Want可以直接匹配到指定的Ability。

uri

只讀

string

表示攜帶的數(shù)據(jù),一般配合type使用,指明待處理的數(shù)據(jù)類型。如果在Want中指定了uri,則Want將匹配指定的Uri信息,包括scheme, schemeSpecificPart, authority和path信息。

type

只讀

string

表示攜帶數(shù)據(jù)類型,使用MIME類型規(guī)范。例如:"text/plain"、"image/*"等。

action

只讀

string

表示要執(zhí)行的通用操作(如:查看、分享、應(yīng)用詳情)。在隱式Want中,您可定義該字段,配合uri或parameters來表示對數(shù)據(jù)要執(zhí)行的操作。如打開,查看該uri數(shù)據(jù)。例如,當(dāng)uri為一段網(wǎng)址,action為ohos.want.action.viewData則表示匹配可查看該網(wǎng)址的Ability。

entities

只讀

Array<string>

表示目標(biāo)Ability額外的類別信息(如:瀏覽器,視頻播放器),在隱式Want中是對action的補充。在隱式Want中,您可定義該字段,來過濾匹配UIAbility類別,如必須是瀏覽器。例如,在action字段的舉例中,可存在多個應(yīng)用聲明了支持查看網(wǎng)址的操作,其中有應(yīng)用為普通社交應(yīng)用,有的為瀏覽器應(yīng)用,您可通過entity.system.browsable過濾掉非瀏覽器的其他應(yīng)用。

flags

只讀

number

表示處理Want的方式。例如通過wantConstant.Flags.FLAG_ABILITY_CONTINUATION表示是否以設(shè)備間遷移方式啟動Ability。

parameters

只讀

{[key: string]: any}

此參數(shù)用于傳遞自定義數(shù)據(jù),通過用戶自定義的鍵值對進行數(shù)據(jù)填充,具體支持的數(shù)據(jù)類型如Want API所示。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號