HarmonyOS鸿蒙Next中有没有跳转到其它APP的demo;比如点击跳到微博,微信这种

HarmonyOS鸿蒙Next中有没有跳转到其它APP的demo;比如点击跳到微博,微信这种 有没有跳转到微博,微信这种APP的demo;

3 回复
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { promptAction } from '@kit.ArkUI';
import { common } from '@kit.AbilityKit';

@Entry
@Component
struct AppJumpDemo {
  private context = getContext(this) as common.UIAbilityContext;

  // 通用跳转方法
  private jumpToApp(uri: string, appName: string) {
    const want: Want = { uri: uri };

    this.context.startAbility(want)
      .then(() => {
        console.info(`打开${appName}成功`);
      })
      .catch((err: BusinessError) => {
        console.error(`打开${appName}失败:`, JSON.stringify(err));

        // 处理应用未安装的情况
        if (err.code === 16000001) {
          promptAction.showToast({
            message: `未安装${appName},即将前往应用市场`
          });
          // 跳转到应用市场搜索
          this.jumpToAppStore(appName);
        }
      });
  }

  // 跳转到应用市场
  private jumpToAppStore(appName: string) {
    const want: Want = {
      uri: `appgallery://search/${appName}`,
      bundleName: 'com.huawei.appmarket',
      abilityName: 'com.huawei.appmarket.MainAbility'
    };
    this.context.startAbility(want);
  }

  build() {
    Column({ space: 30 }) {
      Text('第三方应用跳转示例')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 50 });

      // 跳转到微信
      Button('打开微信')
        .width('80%')
        .height(50)
        .backgroundColor('#07C160')
        .fontColor(Color.White)
        .onClick(() => {
          this.jumpToApp('weixin://', '微信');
        })

      // 跳转到QQ
      Button('打开QQ')
        .width('80%')
        .height(50)
        .backgroundColor('#12B7F5')
        .fontColor(Color.White)
        .onClick(() => {
          this.jumpToApp('mqq://', 'QQ');
        })

      // 跳转到微博
      Button('打开微博')
        .width('80%')
        .height(50)
        .backgroundColor('#E6162D')
        .fontColor(Color.White)
        .onClick(() => {
          this.jumpToApp('sinaweibo://', '微博');
        })

      // 跳转到系统浏览器
      Button('打开浏览器访问百度')
        .width('80%')
        .height(50)
        .backgroundColor('#4F9DFF')
        .fontColor(Color.White)
        .onClick(() => {
          this.jumpToApp('https://www.baidu.com', '浏览器');
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

cke_4615.png

更多关于HarmonyOS鸿蒙Next中有没有跳转到其它APP的demo;比如点击跳到微博,微信这种的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next中,跳转到其他应用可通过UIAbility的隐式启动实现。使用want参数指定目标应用的bundleNameabilityName,调用startAbility()方法即可。系统会匹配并启动目标应用。具体示例代码可在官方文档的“应用模型-UIAbility”章节查看。

在HarmonyOS Next中,可以通过Want(意图)和隐式查询来实现跳转到其他应用。以下是核心方法:

  1. 使用Want跳转:通过指定目标应用的bundleName和abilityName,可以显式启动其他应用。例如,要打开微博,可以这样写:

    let wantInfo = {
      bundleName: 'com.sina.weibo', // 微博的bundleName
      abilityName: 'com.sina.weibo.MainAbility' // 微博的主Ability
    };
    await context.startAbility(wantInfo);
    
  2. 隐式Want跳转:如果不知道目标应用的具体信息,可以通过定义action、entities等参数,让系统匹配能处理该意图的应用。例如,打开一个网页链接:

    let wantInfo = {
      action: 'ohos.want.action.viewData',
      entities: ['entity.system.browsable'],
      uri: 'https://weibo.com'
    };
    await context.startAbility(wantInfo);
    
  3. 跳转到常用应用:对于微信、微博等常见应用,通常需要知道其准确的bundleName和abilityName。这些信息可以通过查询应用市场或官方文档获取。注意,部分应用可能未公开其abilityName,此时隐式跳转更适用。

  4. 注意事项

    • 确保目标应用已安装在设备上。
    • 部分应用可能限制被其他应用直接启动,需遵循其使用规范。
    • 跳转前建议使用canOpenUrl等方法检查目标应用是否可用。

以上方法适用于HarmonyOS Next的应用间跳转场景。

回到顶部