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参数配置目标应用信息,使用startAbility()方法实现跳转。具体实现需要目标应用在设备上已安装,且跳转参数需符合目标应用定义的规则。官方文档中有相关示例代码可供参考。

在HarmonyOS Next中,可以通过Want(意图)机制实现跳转到其他应用。虽然官方没有直接提供针对微博、微信的特定Demo,但跳转到第三方应用是标准功能。

核心方法是使用隐式Want,通过定义匹配的URI(如微博的sinaweibo://)或Action等参数来启动应用。关键步骤和示例代码如下:

  1. 权限声明:在module.json5文件中声明ohos.permission.START_ABILITIES_FROM_BACKGROUND权限(仅当需要后台启动时)和ohos.permission.START_INVISIBLE_ABILITY权限(仅当需要启动不可见Ability时)。

    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.START_ABILITIES_FROM_BACKGROUND"
          },
          {
            "name": "ohos.permission.START_INVISIBLE_ABILITY"
          }
        ]
      }
    }
    
  2. 使用隐式Want跳转:在代码中构造相应的Want并调用startAbility()

    import { common, Want } from '@kit.AbilityKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    
    @Entry
    @Component
    struct Index {
      @State message: string = '跳转到第三方应用示例';
    
      // 示例:尝试跳转到微博
      jumpToWeibo() {
        let wantInfo: Want = {
          // 使用微博的URI Scheme
          uri: 'sinaweibo://',
          // 可补充Action或Entities以更精确匹配
          // action: 'ohos.want.action.viewData',
          // entities: ['entity.system.browsable']
        };
    
        let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
        context.startAbility(wantInfo).then(() => {
          hilog.info(0x0000, 'JumpDemo', '跳转微博成功');
        }).catch((err: BusinessError) => {
          hilog.error(0x0000, 'JumpDemo', `跳转失败: ${err.code}, ${err.message}`);
          // 处理失败,例如应用未安装
        });
      }
    
      // 示例:尝试跳转到微信
      jumpToWeChat() {
        let wantInfo: Want = {
          uri: 'weixin://',
        };
        let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
        context.startAbility(wantInfo).then(() => {
          hilog.info(0x0000, 'JumpDemo', '跳转微信成功');
        }).catch((err: BusinessError) => {
          hilog.error(0x0000, 'JumpDemo', `跳转失败: ${err.code}, ${err.message}`);
        });
      }
    
      build() {
        Row() {
          Column() {
            Text(this.message)
              .fontSize(20)
              .margin(10)
    
            Button('跳转到微博')
              .onClick(() => this.jumpToWeibo())
              .margin(10)
    
            Button('跳转到微信')
              .onClick(() => this.jumpToWeChat())
              .margin(10)
          }
          .width('100%')
        }
        .height('100%')
      }
    }
    

重要说明:

  • URI Scheme:示例中的 sinaweibo://weixin:// 是微博和微信常见的通用URI Scheme。实际使用时,应确认目标应用在HarmonyOS Next上公开的准确Scheme,它可能因应用版本或厂商实现而异。
  • 错误处理:跳转可能因应用未安装、Scheme不支持、权限不足等原因失败,必须进行异常捕获和处理。
  • 权限要求:如果目标Ability配置了startEnabled权限,则跳转方需要具备相应权限。
  • 应用可见性:只能跳转到已安装且对调用方可见的应用。

你可以参考官方文档中关于Want隐式Want启动的部分,了解更详细的匹配规则和参数配置。

回到顶部