色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙Ability Kit(程序框架服務)【應用間使用Want分享數據】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-07 15:19 ? 次閱讀

應用間使用Want分享數據

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

應用文件分享

應用文件分享是應用之間通過分享URI(Uniform Resource Identifier)或文件描述符FD(File Descriptor)的方式,進行文件共享的過程。

  • 基于URI分享方式,應用可分享單個文件,通過[ohos.app.ability.wantConstant]的wantConstant.Flags接口以只讀或讀寫權限授權給其他應用。應用可通過[ohos.file.fs]的open接口打開URI,并進行讀寫操作。當前僅支持臨時授權,分享給其他應用的文件在被分享應用退出時權限被收回。
  • 基于FD分享方式,應用可分享單個文件,通過ohos.file.fs的open接口以指定權限授權給其他應用。應用從Want中解析拿到FD后可通過ohos.file.fs的讀寫接口對文件進行讀寫。

由于FD分享的文件關閉FD后,無法再打開分享文件,因此不推薦使用,本文重點介紹基于URI[分享文件給其他應用]或[使用其他應用分享的文件]。

應用可分享目錄

沙箱路徑物理路徑說明 開發前請熟悉鴻蒙開發指導文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復制轉到。
/data/storage/el1/base/data/app/el1//base/應用el1級別加密數據目錄
/data/storage/el2/base/data/app/el2//base/應用el2級別加密數據目錄
/data/storage/el2/distributedfiles/mnt/hmdfs//account/device_view//data/應用el2加密級別有帳號分布式數據融合目錄

文件URI規范

文件URI的格式為:

格式為file:///

  • file:文件URI的標志。
  • bundleName:該文件資源的屬主。
  • path:文件資源在應用沙箱中的路徑。

分享文件給其他應用

在分享文件給其他應用前,開發者需要先[獲取應用文件路徑]。

  1. 獲取文件在應用沙箱中的路徑,并轉換為文件URI。

    import UIAbility from '@ohos.app.ability.UIAbility';
    import fileUri from '@ohos.file.fileuri';
    import window from '@ohos.window';
    
    export default class EntryAbility extends UIAbility {
      onWindowStageCreate(windowStage: window.WindowStage) {
        // 獲取文件的沙箱路徑
        let pathInSandbox = this.context.filesDir + "/test1.txt";
        // 將沙箱路徑轉換為uri
        let uri = fileUri.getUriFromPath(pathInSandbox);
        // 獲取的uri為"file://com.example.demo/data/storage/el2/base/files/test.txt"
      }
    }
    
  2. 設置獲取文件的權限以及選擇要分享的應用。 分享文件給其他應用需要使用[startAbility]接口,將獲取到的URI填充在want的參數uri中,標注URI的文件類型,type字段可參考[Want屬性],并通過設置want的flag來設置對應的讀寫權限,action字段配置為"ohos.want.action.sendData"表示進行應用文件分享,開發示例如下。

    說明:

    寫權限分享時,同時授予讀權限。

    import fileUri from '@ohos.file.fileuri';
    import window from '@ohos.window';
    import wantConstant from '@ohos.app.ability.wantConstant';
    import UIAbility from '@ohos.app.ability.UIAbility';
    import Want from '@ohos.app.ability.Want';
    import { BusinessError } from '@ohos.base';
    
    export default class EntryAbility extends UIAbility {
      onWindowStageCreate(windowStage: window.WindowStage) {
        // 獲取文件沙箱路徑
        let filePath = this.context.filesDir + '/test1.txt';
        // 將沙箱路徑轉換為uri
        let uri = fileUri.getUriFromPath(filePath);
        let want: Want  = {
          // 配置被分享文件的讀寫權限,例如對被分享應用進行讀寫授權
          flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
          // 配置分享應用的隱式拉起規則
          action: 'ohos.want.action.sendData',
          uri: uri,
          type: 'text/plain'
        }
        this.context.startAbility(want)
          .then(() = > {
            console.info('Invoke getCurrentBundleStats succeeded.');
          })
          .catch((err: BusinessError) = > {
            console.error(`Invoke startAbility failed, code is ${err.code}, message is ${err.message}`);
          });
      }
      // ...
    }
    

圖1 效果示意圖:
share-app-file

使用其他應用分享的文件

被分享應用需要在[module.json5配置文件]的actions標簽的值配置為"ohos.want.action.sendData",表示接收應用分享文件,配置uris字段,表示接收URI的類型,即只接收其他應用分享該類型的URI,如下表示本應用只接收scheme為file,類型為txt的文件,示例如下。

{
  "module": {
    ...
    "abilities": [
      {
        ...
        "skills": [
          {
            ...
            "actions": [
              "ohos.want.action.sendData"
            ],
            "uris": [
              {
                "scheme": "file",
                "type": "text/plain"
              }
           ]
          }
        ]
      }
    ]
  }
}

被分享方的UIAbility被啟動后,可以在其[onCreate()]或者[onNewWant]回調中獲取傳入的Want參數信息

通過接口want的參數獲取分享文件的URI,獲取文件URI后通過fs.open接口打開文件,獲取對應的file對象后,可對文件進行讀寫操作。
鴻蒙文檔.png

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
// xxx.ets
import fs from '@ohos.file.fs';
import Want from '@ohos.app.ability.Want';
import { BusinessError } from '@ohos.base';

function getShareFile() {
  try {
    let want: Want = {}; // 此處實際使用時應該修改為獲取到的分享方傳遞過來的want信息

    // 從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('open file successfully!');
    } catch (err) {
      let error: BusinessError = err as BusinessError;
      console.error(`Invoke openSync failed, code is ${error.code}, message is ${error.message}`);
    }
  } catch (error) {
    let err: BusinessError = error as BusinessError;
    console.error(`Invoke openSync failed, code is ${err.code}, message is ${err.message}`);
  }
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8639

    瀏覽量

    151385
  • 框架
    +關注

    關注

    0

    文章

    403

    瀏覽量

    17510
  • 鴻蒙
    +關注

    關注

    57

    文章

    2369

    瀏覽量

    42900
收藏 人收藏

    評論

    相關推薦

    鴻蒙開發接口Ability框架:【@ohos.application.Ability (Ability)】

    Ability模塊提供對Ability生命周期、上下文環境等調用管理的能力,包括Ability創建、銷毀、轉儲客戶端信息等。
    的頭像 發表于 04-30 17:42 ?2288次閱讀
    <b class='flag-5'>鴻蒙</b>開發接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.application.<b class='flag-5'>Ability</b> (<b class='flag-5'>Ability</b>)】

    鴻蒙Ability Kit程序框架服務)【ServiceExtensionAbility】

    [ServiceExtensionAbility]是SERVICE類型的ExtensionAbility組件,提供后臺服務能力,其內部持有了一個[ServiceExtensionContext],通過[ServiceExtensionContext]提供了豐富的接口供外部使用。
    的頭像 發表于 06-04 14:50 ?1215次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【ServiceExtensionAbility】

    鴻蒙Ability Kit程序框架服務)【UIExtensionAbility】

    [UIExtensionAbility]是UI類型的ExtensionAbility組件,需要與[UIExtensionComponent]一起配合使用,開發者可以在UIAbility的頁面中通過UIExtensionComponent嵌入提供方應用的UIExtensionAbility提供的UI。UIExtensionAbility會在獨立于UIAbility的進程中運行,完成其頁面的布局和渲染。常用于有進程隔離訴求的系統彈窗、狀態欄、膠囊等模塊化開發的場景。
    的頭像 發表于 06-05 09:19 ?1400次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【UIExtensionAbility】

    鴻蒙Ability開發-Stage模型下Ability的創建和使用

    函數 HiLog日志系統可以讓應用按照指定類型、指定級別、指定格式字符串打印日志內容,幫助開發者了解應用/服務的運行狀態,更好地調試程序。 HiLog提供了debug、info、warn、error以及fatal
    發表于 01-08 15:34

    HarmonyOS NEXT應用元服務開發Intents Kit(意圖框架服務)綜述

    一、綜述 Intents Kit(意圖框架服務)是HarmonyOS級的意圖標準體系 ,意圖連接了應用/元服務內的業務功能。 意圖框架能幫開
    發表于 11-28 10:43

    跟阿斌一起學鴻蒙(2): Ability vs App?

    程序員們依然可以為你實現,只是實現起來會相對麻煩,比如各種遠程通信,各種數據和狀態的同步,還有各種聯調和測試。而鴻蒙OS,將很多麻煩的處理過程整合到操作系統中,借此希望讓程序員們可以
    發表于 11-30 20:56

    鴻蒙開發接口Ability框架:【@ohos.application.Want (Want)】

    Want模塊提供系統的基本通信組件的能力。
    的頭像 發表于 05-11 09:39 ?428次閱讀
    <b class='flag-5'>鴻蒙</b>開發接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.application.<b class='flag-5'>Want</b> (<b class='flag-5'>Want</b>)】

    鴻蒙應用模型:【Ability Kit】簡介

    Ability Kit程序框架服務)提供了應用程序開發和運行的應用模型,是系統為開發者提供的應
    的頭像 發表于 05-29 14:41 ?673次閱讀
    <b class='flag-5'>鴻蒙</b>應用模型:【<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>】簡介

    鴻蒙Ability Kit程序框架服務)【Ability內頁面間的跳轉】

    基于Stage模型下的Ability開發,實現Ability內頁面間的跳轉和數據傳遞。
    的頭像 發表于 06-03 20:43 ?307次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>Ability</b>內頁面間的跳轉】

    鴻蒙Ability Kit程序框架服務)【ExtensionAbility組件】

    ExtensionAbility組件是基于特定場景(例如服務卡片、輸入法等)提供的應用組件,以便滿足更多的使用場景。
    的頭像 發表于 06-04 15:54 ?621次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【ExtensionAbility組件】

    鴻蒙Ability Kit程序框架服務)【Ability與ServiceExtensionAbility通信】

    本示例展示通過[IDL的方式]和?[@ohos.rpc]?等接口實現了Ability與ServiceExtensionAbility之間的通信。
    的頭像 發表于 06-05 09:28 ?504次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>Ability</b>與ServiceExtensionAbility通信】

    鴻蒙Ability Kit程序框架服務)【Want概述】

    [Want]是一種對象,用于在應用組件之間傳遞信息。
    的頭像 發表于 06-06 09:16 ?536次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>Want</b>概述】

    鴻蒙Ability Kit程序框架服務)【顯式Want與隱式Want匹配規則】

    在啟動目標應用組件時,會通過顯式[Want]或者隱式[Want]進行目標應用組件的匹配,這里說的匹配規則就是調用方傳入的[want]參數中設置的參數如何與目標應用組件聲明的配置文件進行匹配。
    的頭像 發表于 06-06 14:30 ?564次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【顯式<b class='flag-5'>Want</b>與隱式<b class='flag-5'>Want</b>匹配規則】

    鴻蒙Ability Kit程序框架服務)【應用啟動框架AppStartup】

    `AppStartup`提供了一種更加簡單高效的初始化組件的方式,支持異步初始化組件加速應用的啟動時間。使用啟動框架應用開發者只需要分別為待初始化的組件實現`AppStartup`提供
    的頭像 發表于 06-10 18:38 ?724次閱讀

    鴻蒙開發Ability Kit程序框架服務:任務管理

    AbilityRecord:系統服務側管理一個UIAbility實例的最小單元,對應一個應用側的UIAbility組件實例。系統服務側管理UIAbility實例數量上限為512個。
    的頭像 發表于 06-24 14:46 ?466次閱讀
    <b class='flag-5'>鴻蒙</b>開發<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>:任務管理
    主站蜘蛛池模板: 欧美一夜爽爽爽爽爽爽| 中文字幕不卡免费高清视频| bbwvideos欧美老妇| 人妻仑乱少妇88MAV| 福利一区福利二区| 无码国产欧美日韩精品| 精品国产免费人成视频| 97在线免费观看| 色屁屁影院| 久久囯产精品777蜜桃传媒| 99热这里只有精品| 小小水蜜桃视频高清在线播放| 九九热久久只有精品2| 扒开女生尿口| 亚洲精品黄色| 欧美日韩一区在线观看| 国产偷国产偷亚州清高| 中文字幕一区二区三区在线观看| 日本熟妇乱妇熟色A片蜜桃亚洲| 户外插BBBBB| 成人毛片免费观看视频大全| 亚洲色综合中文字幕在线| 欧美一区二区在线观看| 精品人妻无码一区二区三区蜜桃臀| qvod伦理片| 亚洲人成在线播放无码| 日本免费xxx| 久久三级网站| 国产精品久久精品视| 5G在线观看免费年龄确认18| 午夜视频在线观看国产| 欧美人xxxxx| 精品视频在线一区| 高清无码中文字幕影片| 97草碰在线视频免费| 亚洲国产夜色在线观看| 热久久视久久精品2015| 久久热这里面只有精品| 国产麻豆AV伦| 穿着丝袜被男生强行啪啪| 2019精品国产品在线不卡|