【最新鴻蒙應用開發】——Want信息載體

信息傳遞載體Want

1、概述

上一章節我們學習了UIAbility組件 【最新鴻蒙應用開發】——一篇搞懂什么是UIAbility-CSDN博客
,其中組件間的交互傳遞信息的媒介就是Want,本章節我們來更加深入學習Want的相關知識。 Want是一種對象,用于在應用組件之間傳遞信息。

2、類型

  1. 顯式Want:在啟動目標應用組件時,調用方傳入的want參數中指定了abilityNamebundleName,稱為顯式Want

  2. 隱式Want:在啟動目標應用組件時,調用方傳入的want參數中未指定abilityName,稱為隱式Want

import Want from '@ohos.app.ability.Want';
?
// 1. 顯式Want
let wantInfo: Want = {deviceId: '', // deviceId為空表示本設備bundleName: 'com.example.myapplication',abilityName: 'FuncAbility',
}
?
// 2. 隱式Want
let wantInfo: Want = {// uncomment line below if wish to implicitly query only in the specific bundle.// bundleName: 'com.example.myapplication',action: 'ohos.want.action.search',// entities can be omittedentities: [ 'entity.system.browsable' ],uri: 'https://www.test.com:8080/query/student',type: 'text/plain',
};

3、匹配規則

調用方傳入的want參數中設置的參數如何與目標應用組件聲明的配置文件進行匹配,需要時查看參考文檔即可。

顯式Want與隱式Want匹配規則 (openharmony.cn)

4、使用場景

  • 在調用startAbility()方法時,其入參want中指定了一系列的entities字段(表示目標UIAbility額外的類別信息,如瀏覽器、視頻播放器)和actions字段(表示要執行的通用操作,如查看、分享、應用詳情等)等參數信息,

  • 然后由系統去分析want,并幫助找到合適的UIAbility來啟動。

使用顯式Want啟動應用組件

在應用使用場景中,當用戶在應用內點擊某個按鈕時,經常需要拉起指定UIAbility組件來完成某些特定任務。在啟動UIAbility時,指定了abilityName和bundleName參數,可以使用顯式Want方式啟動UIAbility。

針對應用的特定任務,用戶需要通過點擊應用內的按鈕來啟動指定的UIAbility組件。在啟動UIAbility時,需要提供abilityName和bundleName參數,并使用顯式Want方式來啟動。

使用隱式Want打開網址

以打開瀏覽器為例,假設設備上安裝了一個或多個瀏覽器應用。為了使瀏覽器應用能夠正常工作,需要在module.json5配置文件進行配置,具體配置如下:

{"module": {"abilities": [{//入口配置"skills": [{"actions": ["action.system.home"],"entities": ["entity.system.home"]},//瀏覽器配置{"actions": ["ohos.want.action.viewData"],"entities": ["entity.system.browsable"],"uris": [{"scheme": "https","host": "www.test.com","port": "8080","pathStartWith": "query"},{"scheme": "http"}]}]}]}
}

在調用方UIAbility中,使用隱式Want方式啟動瀏覽器應用。

import common from '@ohos.app.ability.common';
import Want from '@ohos.app.ability.Want';
import { BusinessError } from '@ohos.base';
?
let context = getContext(this) as common.UIAbilityContext;
let wantInfo: Want = {// uncomment line below if wish to implicitly query only in the specific bundle.// bundleName: 'com.example.myapplication',action: 'ohos.want.action.viewData',// entities can be omitted.entities: ['entity.system.browsable'],uri: 'https://www.test.com:8080/query/student'
}
context.startAbility(wantInfo).then(() => {// ...
}).catch((err: BusinessError) => {// ...
})

匹配過程分析:

  1. 調用方傳入的want參數的action不為空,待匹配目標應用組件的skills配置中的actions不為空且包含調用方傳入的want參數的action,action匹配成功。

  2. 調用方傳入的want參數的entities不為空,待匹配目標應用組件的skills配置中的entities不為空且包含調用方傳入的want參數的entities,entities匹配成功。

  3. 待匹配目標應用組件的skills配置中內uris拼接為https://www.test.com:8080/query*(其中*表示通配符),包含調用方傳入的want參數的uri,uri匹配成功。

當存在多個匹配的應用時,系統將彈出應用選擇框供用戶選擇。示意效果如下圖所示。

應用間使用Want分享數據

在應用使用場景中,用戶經常需要將應用內的數據(如文字、圖片等)分享至其他應用以供進一步處理。Want支持實現應用間的數據分享,具體指導請參見應用文件分享。

參考文獻: OpenHarmoney應用開發文檔Want概述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23027.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23027.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23027.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2. JavaScript 語法和數據類型

1. 基礎 JavaScript不區分大小寫 2. 注釋 // 單行注釋/* 這是一個更長的,多行注釋 *//* 然而,你不能,/* 嵌套注釋 */ 語法錯誤 */3. 聲明 var 聲明一個變量,可選初始化一個值。 let 聲明一個塊作用域的局部變量,可…

ORM(對象關系映射)概念詳解

一、技術難點 ORM,即對象關系映射(Object-Relational Mapping),它的技術難點主要體現在如何將面向對象編程中的類和對象高效地映射到關系型數據庫中的表和記錄。具體來說,有以下幾個方面的技術挑戰: 數據類…

計算機畢業設計項目、管理系統、可視化大屏、大數據分析、協同過濾、推薦系統、SSM、SpringBoot、Spring、Mybatis、小程序項目編號1-500

大家好,我是DeBug,很高興你能來閱讀!作為一名熱愛編程的程序員,我希望通過這些教學筆記與大家分享我的編程經驗和知識。在這里,我將會結合實際項目經驗,分享編程技巧、最佳實踐以及解決問題的方法。無論你是…

桌面型激光雕刻機的發展前景及TMC應用優勢

一、行業現狀 近兩年來,激光雕刻行業正處于快速發展階段。隨著人們生活水平的提高,對個性化、定制化產品的需求日益增加,激光雕刻以其獨特的創意和精美的效果,滿足了消費者對個性化產品的追求。同時,隨著科技的不斷進…

OCP 安裝 OceanBase集群(企業版3.2.4.1)

創建集群 登錄OCP界面 1.點擊左側工具欄中的集群 2.進入集群頁面后 點擊 右上角的創建集群 集群設置 進入 創建集群 頁面,進行 目標集群 配置 集群種類 根據 生產環境 選擇 分布式 或者 單機集中式,第一次安裝 集群類型 選擇 主集群。 注意&#xf…

計算機網絡到底是指什么?

計算機網絡是信息技術領域中最為核心和復雜的一部分,它涵蓋了眾多的技術原理和應用。下面,我們將從技術層面深入探討計算機網絡的相關內容。 一、計算機網絡的分層模型 計算機網絡的分層模型是網絡通信的基石,它將網絡通信過程劃分為不同的層…

怎么解決企業生產計劃排程的幾大難點?

生產計劃排程,作為企業管理中的核心環節,其復雜性和動態性一直困擾著眾多企業。然而,通過科學的策略和技術手段,這些難點并非不可攻克。 生產環境的動態變化,如臨時訂單改變、緊急插單的需求、產品流程變化等&#xff…

Linux中網絡配置項目筆記

1.NetworkManager安裝 (或者安裝network.service,不要一起裝防止網絡沖突) 有網絡的狀態下yum install 下載無網絡的狀態下使用預先下載rpm包 rpm -ivh systemctl start NetworkManager #啟動 systemctl stop NetworkManager #停止 systemctl restart NetworkMana…

各大AI模型訓練成本大比拼

像OpenAI的ChatGPT、谷歌的Gemini Ultra這樣的高級AI模型,訓練它們通常需要數百萬美元的費用,且該成本還在迅速上升。隨著計算需求的增加,訓練它們所需的計算能力的費用也在飆升。為此,AI公司正在重新考慮如何訓練這些生成式AI系統…

描述Servlet監聽器的類型和用途

Servlet監聽器是Servlet規范中定義的一種特殊的類,用于監聽Web應用程序中特定事件的發生。它們按照監聽的對象和事件類型,可以劃分為多種類型,每種類型都有其特定的用途。 監聽器的類型 按照監聽對象劃分 應用程序環境對象(Serv…

華為OD刷題C卷 - 每日刷題 12(數組連續和,求最多可以派出多少支團隊)

1、(數組連續和): 這段代碼是解決“數組連續和”的問題。它提供了一個Java類Main,其中包含main方法和getResult方法,用于計算給定數組中有多少個連續區間的和大于等于給定值x。 main方法首先讀取數組的長度n和閾值x&…

【Javascript修煉篇】如何對JSON格式進行轉換

這將是我們幾乎日常都會用到的一個超實用函數。 根據數據的多樣性與結構,API 的響應可能會返回極其復雜的 JSON 對象。有時候,僅僅從整個 JSON 中抓取一個字段可能就不太夠用了。我們可能需要提取多個字段來展示在網頁上。每次手動遍歷這樣的復雜 JSON …

兩站圖片滑動對比效果實現(VUE3)

像這種圖片滑動對比的效果,網上還不少見吧,但是網上卻不好找到完整現成的實現代碼,我找到幾個地方有類似的代碼,但是都不好直接移植到代碼里,因為很多都是使用原生htmlcssjs實現,太復雜了。反而不好應用到v…

Qt for Android 之 OpenCV編譯(Windows下編譯)

簡介 前兩天剛好更新了4.10, 這里以4.10作為示例進行編譯, Qt版本是Qt6.6.2。 準備OpenCV的Android庫 一. 使用官方編譯好的庫 1. 下載OpenCV android SDK opencv-4.10.0-android-sdk.zip 2. 解壓縮 官方提供的包含了多個架構的opencv android庫 二. 自行編譯…

十三、【源碼】ResultMap解析

源碼地址:https://github.com/mybatis/mybatis-3/ 倉庫地址:https://gitcode.net/qq_42665745/mybatis/-/tree/13-resultMap ResultMap解析 分為兩部分:解析和使用 1.解析 解析XML的時候單獨解析所有的resultMap標簽,封裝成Re…

MySQL 核心模塊揭秘 | 19 期 | 鎖模塊里有什么?什么樣?

InnoDB 中管理表鎖和行鎖的鎖模塊,也就是傳說中的鎖子系統,在內存里是什么樣的? 作者:操盛春,愛可生技術專家,公眾號『一樹一溪』作者,專注于研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品…

LabVIEW開發EOL功能測試系統

LabVIEW開發EOL功能測試系統 介紹了一種基于LabVIEW開發的EOL功能測試系統方案,涵蓋軟件架構、工作流程、模塊化設計、低耦合性、易于修改與維護、穩定性及硬件選型。系統通過高效的CAN通信實現對電機控制器的全面測試,確保運行可靠并支持未來的升級需求…

危機公關之負面信息優化技巧解析

當今時代,網絡發布信息沒有任何門檻,任何人可以通過互聯網發布信息,這使負面信息產生的可能性大大提高,企業形成危機的可能性也大大提高。針對網絡上的負面信息處理得當可能并不會對品牌造成傷害,處理不當就很可能給企…

QT之可拖動布局研究

1. 背景 最開始只用到了最基本的水平布局 、垂直布局。它的好處就是窗口整體縮放后,控件也自動等比例縮放。 但是比如水平布局之中的控件寬度比例、垂直布局之中的控件高度比例都是固定的。 平時也不怎么開發界面,最近有個需求,想界面上的…

Atlassian企業日技術分享:AI在ITSM中的創新實踐與應用、Jira服務管理平臺AI功能介紹

2024年5月17日,Atlassian中國合作伙伴企業日活動在上海成功舉辦。活動以“AI協同 創未來——如何利用人工智能提升團隊協作,加速產品交付”為主題,深入探討了AI技術在團隊協作與產品交付中的創新應用與實踐,吸引了眾多業內專家、企…