codecamp

使用隐式Want打开网址

前提条件

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

浏览器应用中通过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. 当有多个匹配应用时,会被应用选择器展示给用户进行选择。

使用显式Want启动Ability
应用间使用Want分享数据
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录
HAR

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }