无需要导入模块
需要权限
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》
参考文档