鸿蒙(HarmonyOS)-Fa应用【Js页面】启动一个指定的Ability(分布式拉起)

无需要导入模块

需要权限

ohos.permission.DISTRIBUTED_DATASYNC

FeatureAbility.startAbility(OBJECT)

拉起一个FA,无回调结果。
允许以显式的方式,拉起远程或本地的FA。

  • OBJECT参数


    OBJECT参数

    image.png
  • 返回值(JSON字符串)


    返回值(JSON字符串)
  • 示例
// caller
export default {
  start() {
    let actionData = {
      uri: 'www.huawei.com'
    };
    let target = {
      bundleName: "com.example.harmonydevsample",
      abilityName: "com.example.harmonydevsample.EntryJSApiAbility",
      data: actionData
    };

    let result = await FeatureAbility.startAbility(target);
    let ret = JSON.parse(result);
    if (ret.code == 0) {
      console.log('success');
    } else {
      console.log('cannot start browing service, reason: ' + ret.data);
    }
  }
}

// callee
export default {
  data: {
    contact: "contact information",
    location: "location information"
  }
}
FeatureAbility.startAbilityForResult(OBJECT)

拉起另一个FA的能力(本地),并在回调中等待被拉起FA的结果返回。
如:一个没有定位功能的FA可以调用另一个有能力的FA,调用地图并且获得用户在地图上选择的位置。
它跟FeatureAbility.startAbility的区别在于结果是在被拉起的FA消亡后再返回结果。

  • 示例
    下面的示例展示了一个ability如何拉起另一个ability,并在另一个ability退出时拿到其中的数据。
// caller
export default {
    data: {
        startAbilityForResultExplicitResult: 'NA'
    },
    startAbilityForResultExplicit: async function() {
        var result = await FeatureAbility.startAbilityForResult({
          bundleName: "com.example.harmonydevsample",
          abilityName: "com.example.harmonydevsample.EntryJSApiAbility"
        });
        this.startAbilityForResultExplicitResult = JSON.stringify(result);
    }
}

// callee
export default {
    onShow() {
        let request = {};
        request.result = {
          contact: "contact information",
          location: "location information"
        };
        FeatureAbility.finishWithResult(100, request);
    }
}

FeatureAbility.finishWithResult(OBJECT)

FA调用该接口以主动结束,同时将运行结果作为参数设置。

  • 示例
    该FA被调起并在结束后返回开发者设置的信息:
export default {
    onShow() {
        let request = {};
        request.result = {
          contact: "contact information",
          location: "location information"
        };
        FeatureAbility.finishWithResult(100, request);
    }
}

onNewRequest()

该回调用于处理FA已经启动时收到新的请求,如其他FA在本FA已经启动情况下再次通过startAbility向本FA发送请求。
在正常启动流程下,该回调不会被调用。

重点。。。再来讲讲JS调起Ability时,在Ability如何去接收参数???

直接上代码:

 @Override
 public void onStart(Intent intent) {
     Object objParams = intent.getParams().getParam("__startParams"); //- JS传过来的值
     ZSONObject Data = ZSONObject.stringToZSON(String.valueOf(objParams)); //- 转换成Zson对象
     System.out.println(Data.getString("uri")); //- 接收第一个示例的actionData数据中的uri参数
}

关于Js传值给Ability接收参数,本文中的 intent.getParams().getParam("__startParams")暂时仅适用本文的案例,关于JS卡片传值给Java层的案例,请参考《鸿蒙(HarmonyOS)-Fa应用【Js卡片】启动一个指定的Ability》

参考文档

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Fa应用是支持WebView嵌入H5网页的,WebView提供在应用中集成Web页面的能力,不过目前只支持Java...
    91Shan阅读 4,053评论 1 6
  • 简单讲:在js中使用app.terminate() 应用退出除使用物理按键退出应用外,还可以通过组件的事件触发。本...
    91Shan阅读 2,012评论 0 4
  • 什么是Harmony OS https://developer.harmonyos.com/cn/home/[ht...
    mjylfz阅读 1,107评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,605评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,226评论 4 8