使用隐式Want打开网址

2024-01-25 12:25 更新

前提条件

设备上安装了一个或多个浏览器。

浏览器应用中通过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. ]

开发步骤

  1. 在自定义函数implicitStartAbility内使用隐式Want启动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内action不为空,且被skills内action包括,匹配成功。

    2. want内entities不为空,且被skills内entities包括,匹配成功。

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

    4. want内type不为空,且被skills内type包含,匹配成功。

  2. 当有多个匹配应用时,会被应用选择器展示给用户进行选择。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号