HarmonyOS Next開發學習手冊——通過startAbility拉起文件處理類應用

使用場景

開發者可以通過調用startAbility接口,由系統從已安裝的應用中尋找符合要求的應用來實現打開特定文件的意圖,例如:瀏覽器下應用下載PDF文件,可以調用此接口選擇文件處理應用打開此PDF文件。開發者需要在請求中設置待打開文件的URI路徑(uri)、文件格式(type)等字段,以便系統能夠識別,直接拉起文件打開應用或彈出一個選擇框,讓用戶選擇合適的應用來打開文件,效果示意如下圖所示。

圖1 效果示意圖

接口關鍵參數說明

開發者通過調用 startAbility 接口即可實現由已安裝的垂域應用來打開文件。

表1 startAbility請求中want相關參數說明

參數名稱類型是否必填說明
uristring表示待打開文件的URI路徑,一般配合type使用。
uri格式為:file://bundleName/path
* file:文件URI的標志。
* bundleName:該文件資源的屬主。* path:文件資源在應用沙箱中的路徑。
typestring表示MIME type類型描述,打開文件的類型。比如:‘text/xml’ 、 'image/*'等,MIME定義請參見https://www.iana.org/assignments/media-types/media-types.xhtml?utm_source=ld246.com。
parametersRecord<string, Object>表示由系統定義,由開發者按需賦值的自定義參數,文件打開場景請參考表2。
flagsnumber表示處理方式,文件打開場景請參考表3。

表2?parameters 相關參數說明

參數名稱類型說明
ability.params.streamstring指示攜帶的文件URI要授權給目標方,用于待打開的文件存在其他文件依賴的場景。例如打開本地html文件依賴本地其余資源文件的場景等。對應的value必須是string類型的文件URI數組。文件URI的獲取參考表1中uri參數。
ohos.ability.params.showDefaultPickerstring表示在系統僅找到一個應用打開文件的場景下,是否需要展示選擇文件打開方式的彈框來給用戶選擇。
* false:表示由系統策略或默認應用設置決定直接拉起文件打開應用還是展示彈框。
* true:表示始終展示彈框。缺省為false。

表3? flags 相關參數說明

參數名稱說明
FLAG_AUTH_READ_URI_PERMISSION0x00000001指對URI執行讀取操作的授權。
FLAG_AUTH_WRITE_URI_PERMISSION0x00000002指對URI執行寫入操作的授權。

接入步驟

調用方接入步驟

  1. 導入相關模塊。
// xxx.ets
import { fileUri } from '@kit.CoreFileKit';
import { UIAbility, Want, common, wantConstant } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServiceKit';
  1. 獲取 應用上下文Context 。
// xxx.ets
// 假設應用bundleName值為com.example.demo
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage) {// 獲取文件沙箱路徑let filePath = this.context.filesDir + '/test1.txt';// 將沙箱路徑轉換為urilet uri = fileUri.getUriFromPath(filePath);// 獲取的uri為"file://com.example.demo/data/storage/el2/base/files/test.txt"
}
// ...
}
  1. 構造請求數據。
// xxx.ets
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage) {// 獲取文件沙箱路徑let filePath = this.context.filesDir + '/test.txt';// 將沙箱路徑轉換為urilet uri = fileUri.getUriFromPath(filePath);// 構造請求數據let want: Want = {uri: uri,type: 'text/plain', // 表示待打開文件的類型// 配置被分享文件的讀寫權限,例如對文件打開應用進行讀寫授權flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION};
}
// ...
}
  1. 調用接口啟動。
// xxx.ets
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage) {// 獲取文件沙箱路徑let filePath = this.context.filesDir + '/test.txt';// 將沙箱路徑轉換為urilet uri = fileUri.getUriFromPath(filePath);// 構造請求數據let want: Want = {uri: uri,type: 'text/plain', // 表示待打開文件的類型// 配置被分享文件的讀寫權限,例如對文件打開應用進行讀寫授權flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION};// 調用接口啟動this.context.startAbility(want).then(() => {console.info('Succeed to invoke startAbility.');}).catch((err: BusinessError) => {console.error(`Failed to invoke startAbility, code: ${err.code}, message: ${err.message}`);});
}
// ...
}

目標方接入步驟

  1. 聲明文件打開能力

支持打開文件的應用需要在module.json5配置文件中聲明文件打開能力。其中uris字段表示接收URI的類型,其中scheme固定為file。type字段表示支持打開的文件類型(請參見MIME定義),如下舉例中類型為txt文件。

{
"module": {// ..."abilities": [{// ..."skills": [{"actions": ["ohos.want.action.viewData" // 必填,聲明數據處理能力],"uris": [{// 允許打開uri中以file://協議開頭標識的本地文件"scheme": "file", // 必填,聲明協議類型為文件"type": "text/plain", // 必填,表示支持打開的文件類型"linkFeature": "FileOpen" // 必填,表示此URI的功能為文件打開}// ...]// ...}]}]
}
}
  1. 應用處理待打開文件。

聲明了文件打開的應用在被拉起后,獲取傳入的Want參數信息,從中獲取待打開文件的URI,在打開文件并獲取對應的file對象后,可對文件進行讀寫操作。

// xxx.ets
import fs from '@ohos.file.fs';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServiceKit';export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {// 從want信息中獲取uri字段let uri = want.uri;if (uri == null || uri == undefined) {console.info('uri is invalid');return;}try {// 根據待打開文件的URI進行相應操作。例如同步讀寫的方式打開URI獲取file對象let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);console.info('Succeed to open file.');} catch (err) {let error: BusinessError = err as BusinessError;console.error(`Failed to open file openSync, code: ${error.code}, message: ${error.message}`);}}
}

鴻蒙全棧開發全新學習指南

也為了積極培養鴻蒙生態人才,讓大家都能學習到鴻蒙開發最新的技術,針對一些在職人員、0基礎小白、應屆生/計算機專業、鴻蒙愛好者等人群,整理了一套純血版鴻蒙(HarmonyOS Next)全棧開發技術的學習路線【包含了大廠APP實戰項目開發】

本路線共分為四個階段:

第一階段:鴻蒙初中級開發必備技能

在這里插入圖片描述

第二階段:鴻蒙南北雙向高工技能基礎:gitee.com/MNxiaona/733GH

第三階段:應用開發中高級就業技術

第四階段:全網首發-工業級南向設備開發就業技術:gitee.com/MNxiaona/733GH

鴻蒙開發面試真題(含參考答案):gitee.com/MNxiaona/733GH

寫在最后

  • 如果你覺得這篇內容對你還蠻有幫助,我想邀請你幫我三個小忙:
  • 點贊,轉發,有你們的 『點贊和評論』,才是我創造的動力。
  • 關注小編,同時可以期待后續文章ing🚀,不定期分享原創知識。
  • 想要獲取更多完整鴻蒙最新學習資源,請移步前往小編:gitee.com/MNxiaona/733GH

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

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

相關文章

三個方法計算兩張圖片的相似度

import cv2 import numpy as np from skimage.metrics import structural_similarity as ssim import osdef is_similar(image1, image2, threshold0.95):對圖像的顏色信息敏感&#xff0c;能快速計算。對圖像的旋轉、縮放等幾何變換不敏感。缺點:對圖像的結構、紋理等信息不敏…

0625_ARM2

練習&#xff1a; 匯編實現1-100累加&#xff0c;結果保存在r0 .text .global _start start:mov r0,#0mov r1,#1b loop loop:add r0,r0,r1add r1,r1,#1cmp r1,#101bne loop .end思維導圖&#xff1a;

C#——SortedList 排序列表詳情

SortedList 排序列表 SortedList 類用來表示鍵/值對的集合&#xff0c;這些鍵/值對按照鍵值進行排序&#xff0c;并且可以通過鍵或索引訪問集合中的各個項。 我們可以將排序列表看作是數組和哈希表的組合&#xff0c;其中包含了可以使用鍵或索引訪問各項的列表。如果您使用索…

tensorflow學習1.3-創建會話,啟動會話

tensorflow學習1.3-創建會話&#xff0c;啟動會話 會話的由來與作用由來作用 會話的定義與結構定義 用法基本用法上下文管理器執行部分計算圖獲取多個結果 總結 練習代碼報錯原因&#xff1a;TensorFlow 2.x中的Eager Execution使用兼容模式來啟用SessionEager Execution和計算…

AI文檔助手:提升文檔處理效率

隨著人工智能技術的飛速發展&#xff0c;AI文檔助手已經成為我們提升工作效率的重要工具。小編就來和大家分享幾款AI文檔助手&#xff0c;它們能夠通過智能化的功能幫助我們快速、準確地完成各種文檔任務。 1.百度文庫AI助手 百度文庫AI助手是百度基于文心一言重構的一站式智能…

全景圖片/老照片/動漫圖片一鍵無損放大與修復

在日常生活中&#xff0c;我們經常使用系統自帶的圖片處理軟件來對圖片進行縮放操作&#xff0c;從而實現放大或縮小圖片。然而&#xff0c;這種方法會帶來一個問題&#xff1a;如果原始圖片較小&#xff0c;放大后會導致精度損失&#xff0c;使圖片變得模糊。 近年來&#xf…

vue uniapp MEQX JWT認證

1.下載依賴 npm install mqttimport * as mqtt from "mqtt/dist/mqtt.min" ? 我是用的uniapp vue3 vite這里嘗試了很多方式,都導入不進去后來我就采用的本地引入方式, 把mqtt.min.js下載到本地然后在index.html 中導入<script src"./MEQX/mqtt.js" typ…

rapidocr-onnxruntime庫及在open-webui上傳PDF 圖像處理 (使用 OCR)應用

背景 rapidocr-onnxruntime是一個跨平臺的OCR庫&#xff0c;基于ONNXRuntime推理框架。 目前已知運行速度最快、支持最廣&#xff0c;完全開源免費并支持離線快速部署的多平臺多語言OCR。 緣起&#xff1a;百度paddle工程化不是太好&#xff0c;為了方便大家在各種端上進行oc…

終極指南:解決iCloud備份錯誤代碼的全面策略

終極指南&#xff1a;解決iCloud備份錯誤代碼的全面策略 在數字化時代&#xff0c;數據安全至關重要。iCloud作為Apple提供的云服務&#xff0c;為我們的iPhone、iPad等設備提供了便捷的數據備份與恢復功能。然而&#xff0c;在使用過程中&#xff0c;我們可能會遇到各種備份錯…

ros,open3d單線激光雷達數據可視化

之前一直嘗試將可視化寫在ros的回調函數中&#xff0c;visualization一直會阻塞進程&#xff0c;換一種方式可以順利實現可視化 import rospy import open3d as o3d import numpy as np from sensor_msgs.msg import LaserScanglobal scan_data scan_data Nonedef callback_l…

機器學習之對比學習方法SimSiam(Simple Siamese)

SimSiam(Simple Siamese)是一種自監督對比學習方法,由Facebook AI Research于2021年提出。SimSiam的設計旨在避免負樣本對,并且不使用動量編碼器,進一步簡化了對比學習的實現過程。 SimSiam的基本概念 自監督學習: 自監督學習方法通過從數據本身獲取監督信號進行學習,不…

qt 播放音頻 c++

目錄 不能播放&#xff1a; 可以播放&#xff1a; 原因&#xff1a; QT core gui sql network multimedia 不能播放&#xff1a; #include <QMediaPlayer>QMediaPlayer player;// player.setMedia(QUrl("qrc:/res/raw/qs.mp3"));player.setMedia(QU…

近鄰算法基礎概念

近鄰算法&#xff0c;尤其是K-最近鄰&#xff08;K-Nearest Neighbors, KNN&#xff09;算法&#xff0c;是一種基于實例的學習方法&#xff0c;廣泛應用于分類和回歸分析中。 基本概念 目的&#xff1a;KNN算法的目的是對新的未知樣本進行分類&#xff08;或預測其數值&…

一款強大的上位機模擬通訊工具----HslCommunicationDemo

目錄 引言 工具概述 官網下載鏈接 安裝步驟 使用教程 引言 在工業自動化和機器人控制領域&#xff0c;上位機模擬通訊工具是工程師和開發者日常工作中不可或缺的一部分。這些工具不僅能幫助我們驗證設備間的通信狀態&#xff0c;還能在設備調試和集成過程中提供極大的便利。…

38.控制功能實現

上一個內容&#xff1a;37.添加簡易的調試功能 以 37.添加簡易的調試功能 它的代碼為基礎進行修改 效果圖&#xff1a; 下圖紅框位置的功能實現 Dlls項目中添加一個Dialog Dialog如下 然后給它添加一個類&#xff0c;MFC添加的類可能會報錯添加 #include "afxdialogex.h…

聚酰胺-酰亞胺(PAI)應用前景廣闊 酰氯法和異氰酸酯法為其主流制備方法

聚酰胺-酰亞胺&#xff08;PAI&#xff09;應用前景廣闊 酰氯法和異氰酸酯法為其主流制備方法 聚酰胺-酰亞胺又稱PAI&#xff0c;是一種分子鏈呈酰亞胺環和酰胺鍵有規則交替排列的高性能熱塑性樹脂。PAI具有耐磨耗性能好、摩擦系數低、尺寸穩定性好、耐高溫、耐輻射、化學穩定性…

通俗易懂的Chat GPT以及國內GPT推薦

ChatGPT是一種先進的聊天機器人&#xff0c;它的全稱是“生成式預訓練變換器”&#xff08;Generative Pre-trained Transformer&#xff09;。ChatGPT背后的基本原理可以簡化為以下幾個關鍵點&#xff1a; 大規模語言模型&#xff1a; ChatGPT建立在一個大規模的語言模型之上&…

如何選擇OLED弧形屏廠家

在選擇OLED弧形屏廠家時&#xff0c;為確保采購到高質量且符合需求的產品&#xff0c;需要綜合考慮多個因素。以下是一份詳細的指南&#xff0c;幫助您清晰、系統地選擇OLED弧形屏廠家&#xff1a; 一、技術實力 研發能力&#xff1a;了解廠家在OLED顯示技術方面的研發能力&…

華為云L實例云服務器部署前后端分離項目全過程記錄

1、配置云服務器 https://blog.csdn.net/modaoshi51991/article/details/139547630 2、上傳前端項目并配置nginx 首先在前端項目運行以下代碼將項目打包 我遇到node.js和openssl兩個版本不兼容問題&#xff0c;更新版本依次解決即可 vue-cli-service build看一下package.json…

第12集《大乘起信論》

請大家打開《講義》第二十四頁&#xff0c;卯三、總顯四種大義。 這一大科是講到心生滅門。生滅的因緣是依止阿賴耶識&#xff0c;阿賴耶識當中有兩種功能&#xff1a;一個是覺&#xff0c;一個是不覺。覺悟的功能又分成兩種&#xff1a;一個是始覺&#xff0c;一個是本覺。我…