使用隱式Want打開網(wǎng)址

2024-01-25 12:25 更新

前提條件

設(shè)備上安裝了一個(gè)或多個(gè)瀏覽器。

瀏覽器應(yīng)用中通過module.json5配置如下:

  1. "skills": [
  2. {
  3. "entities": [
  4. "entity.system.browsable"
  5. // ...
  6. ],
  7. "actions": [
  8. "ohos.want.action.viewData"
  9. // ...
  10. ],
  11. "uris": [
  12. {
  13. "scheme": "https",
  14. "host": "www.test.com",
  15. "port": "8080",
  16. // prefix matching
  17. "pathStartWith": "query",
  18. "type": "text/*"
  19. },
  20. {
  21. "scheme": "http",
  22. // ...
  23. }
  24. // ...
  25. ]
  26. },
  27. ]

開發(fā)步驟

  1. 在自定義函數(shù)implicitStartAbility內(nèi)使用隱式Want啟動(dòng)Ability。

    1. async implicitStartAbility() {
    2. try {
    3. let want = {
    4. // uncomment line below if wish to implicitly query only in the specific bundle.
    5. // bundleName: "com.example.myapplication",
    6. "action": "ohos.want.action.viewData",
    7. // entities can be omitted.
    8. "entities": [ "entity.system.browsable" ],
    9. "uri": "https://www.test.com:8080/query/student",
    10. "type": "text/plain"
    11. }
    12. let context = getContext(this) as common.UIAbilityContext;
    13. await context.startAbility(want)
    14. console.info(`explicit start ability succeed`)
    15. } catch (error) {
    16. console.info(`explicit start ability failed with ${error.code}`)
    17. }
    18. }

    匹配過程如下:

    1. want內(nèi)action不為空,且被skills內(nèi)action包括,匹配成功。

    2. want內(nèi)entities不為空,且被skills內(nèi)entities包括,匹配成功。

    3. skills內(nèi)uris拼接為https://www.test.com:8080/query\* (*為通配符)包含want內(nèi)uri,匹配成功。

    4. want內(nèi)type不為空,且被skills內(nèi)type包含,匹配成功。

  2. 當(dāng)有多個(gè)匹配應(yīng)用時(shí),會(huì)被應(yīng)用選擇器展示給用戶進(jìn)行選擇。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)