鸿蒙Next中如何通过const { url } = item打开链接并在浏览器中访问

在鸿蒙Next开发中,我通过const { url } = item获取到了链接地址,但不知道如何实现点击后跳转到系统浏览器打开这个链接。请问具体应该调用哪个API或方法?需要额外配置权限吗?

2 回复

在鸿蒙Next中,用const { url } = item拿到链接后,直接调用webview.loadUrl(url)就能在应用内打开。想跳外部浏览器?试试system.openUrl(url),让浏览器替你打工!

更多关于鸿蒙Next中如何通过const { url } = item打开链接并在浏览器中访问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,你可以使用WebviewController或系统能力来打开链接并在浏览器中访问。以下是具体方法:

  1. 使用WebviewController加载URL(适用于应用内打开):

    import webview from '[@ohos](/user/ohos).web.webview';
    
    // 创建WebviewController实例
    let webviewController: webview.WebviewController = webview.createWebviewController();
    
    // 加载URL
    webviewController.loadUrl(item.url);
    
  2. 使用系统能力打开默认浏览器(推荐用于外部浏览器访问):

    import abilityAccessCtrl from '[@ohos](/user/ohos).abilityAccessCtrl';
    import common from '[@ohos](/user/ohos).app.ability.common';
    
    // 获取上下文
    let context = getContext(this) as common.UIAbilityContext;
    
    // 检查权限并启动浏览器
    let abilityAccess = abilityAccessCtrl.createAtManager();
    abilityAccess.requestPermissionsFromUser(context, ['ohos.permission.INTERNET']).then(() => {
      let want = {
        action: 'ohos.want.action.viewData',
        entities: ['entity.system.browsable'],
        uri: item.url  // 使用item.url作为链接
      };
      context.startAbility(want).catch(err => {
        console.error('打开浏览器失败: ' + JSON.stringify(err));
      });
    }).catch(err => {
      console.error('权限申请失败: ' + JSON.stringify(err));
    });
    

说明

  • 第一种方法在应用内通过Webview打开链接。
  • 第二种方法调用系统浏览器,需要申请INTERNET权限,并在module.json5中声明:
    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.INTERNET"
          }
        ]
      }
    }
    

根据需求选择合适的方式。如果要在外部浏览器打开,推荐使用第二种方法。

回到顶部