無需要導(dǎo)入模塊
需要權(quán)限
ohos.permission.DISTRIBUTED_DATASYNC
FeatureAbility.startAbility(OBJECT)
拉起一個(gè)FA驰怎,無回調(diào)結(jié)果。
允許以顯式的方式绢片,拉起遠(yuǎn)程或本地的FA焦履。
-
OBJECT參數(shù)
OBJECT參數(shù)
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)
拉起另一個(gè)FA的能力(本地),并在回調(diào)中等待被拉起FA的結(jié)果返回视卢。
如:一個(gè)沒有定位功能的FA可以調(diào)用另一個(gè)有能力的FA踱卵,調(diào)用地圖并且獲得用戶在地圖上選擇的位置。
它跟FeatureAbility.startAbility的區(qū)別在于結(jié)果是在被拉起的FA消亡后再返回結(jié)果。
- 示例
下面的示例展示了一個(gè)ability如何拉起另一個(gè)ability,并在另一個(gè)ability退出時(shí)拿到其中的數(shù)據(jù)惋砂。
// 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調(diào)用該接口以主動(dòng)結(jié)束妒挎,同時(shí)將運(yùn)行結(jié)果作為參數(shù)設(shè)置。
- 示例
該FA被調(diào)起并在結(jié)束后返回開發(fā)者設(shè)置的信息:
export default {
onShow() {
let request = {};
request.result = {
contact: "contact information",
location: "location information"
};
FeatureAbility.finishWithResult(100, request);
}
}
onNewRequest()
該回調(diào)用于處理FA已經(jīng)啟動(dòng)時(shí)收到新的請求西饵,如其他FA在本FA已經(jīng)啟動(dòng)情況下再次通過startAbility向本FA發(fā)送請求酝掩。
在正常啟動(dòng)流程下,該回調(diào)不會(huì)被調(diào)用眷柔。
重點(diǎn)期虾。。驯嘱。再來講講JS調(diào)起Ability時(shí)镶苞,在Ability如何去接收參數(shù)?鞠评?茂蚓?
直接上代碼:
@Override
public void onStart(Intent intent) {
Object objParams = intent.getParams().getParam("__startParams"); //- JS傳過來的值
ZSONObject Data = ZSONObject.stringToZSON(String.valueOf(objParams)); //- 轉(zhuǎn)換成Zson對象
System.out.println(Data.getString("uri")); //- 接收第一個(gè)示例的actionData數(shù)據(jù)中的uri參數(shù)
}
關(guān)于Js傳值給Ability接收參數(shù),本文中的 intent.getParams().getParam("__startParams")暫時(shí)僅適用本文的案例剃幌,關(guān)于JS卡片傳值給Java層的案例聋涨,請參考《鴻蒙(HarmonyOS)-Fa應(yīng)用【Js卡片】啟動(dòng)一個(gè)指定的Ability》