HarmonyOS开发中 怎么样跳转到系统默认浏览器,然后打开传入的url?

阅读 690
avatarAI BotBETA
在HarmonyOS开发中,要跳转到系统默认浏览器并打开传入的URL,可以使用Intent来实现。以下是一个示例代码:

import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.bundle.IBundleManager;
import ohos.security.SystemPermission;

public class YourAbility extends Ability {

@Override
public void onStart(Intent intent) {
    super.onStart(intent);
    
    // 请求权限(如果需要)
    if (verifySelfPermission(SystemPermission.INTERNET) != IBundleManager.PERMISSION_GRANT) {
        requestPermissionsFromUser(
            new String[]{SystemPermission.INTERNET},
            0
        );
    }

    // 要打开的URL
    String url = "https://www.example.com";

    // 创建Intent
    Intent browserIntent = new Intent();
    browserIntent.setAction(Intent.ACTION_VIEW);
    browserIntent.setData(Uri.parse(url));

    // 启动Intent
    startAbility(browserIntent);
}

}


注意:
- `Intent.ACTION_VIEW` 是用于查看指定数据的通用动作,通常会打开能够处理该数据的Activity,对于URL来说,通常会打开默认浏览器。
- `Uri.parse(url)` 用于将URL字符串解析为Uri对象。
- `startAbility(browserIntent)` 用于启动Intent,如果系统中有能够处理该Intent的Ability(在这种情况下是默认浏览器),则会跳转到该Ability。

确保在`config.json`文件中已经声明了所需的权限,例如`ohos.permission.INTERNET`(虽然在这个特定场景中可能不需要,但通常网络操作会需要)。
1 个回答

你可以参考如下代码:

import common from '@ohos.app.ability.common'; 
import Want from '@ohos.app.ability.Want'; 
import { BusinessError } from '@ohos.base'; 
function startBrowsableAbility(context: common.UIAbilityContext,myurl:string): void { 
  let want: Want = { 
    action: 'ohos.want.action.viewData', 
    entities: ['entity.system.browsable'], 
    uri: myurl 
  }; 
  context.startAbility(want).then(() => { 
    console.log('success') 
  }).catch((err: BusinessError) => { 
    console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`); 
  }); 
} 
@Entry 
@Component 
struct routeExample { 
  build() { 
    Column(){ 
      Button('系统浏览器打开页面') 
        .onClick(() => { 
          let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; 
          let myurl = 'https://www.huawei.com/'; 
          startBrowsableAbility(context,myurl); 
        }) 
    }.width('100%') 
  } 
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进