W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
WantAgent提供了封裝行為意圖的能力,這里所說的行為意圖主要是指拉起指定的應(yīng)用組件及發(fā)布公共事件等能力。HarmonyOS支持以通知的形式,將WantAgent從發(fā)布方傳遞至接收方,從而在接收方觸發(fā)WantAgent中指定的意圖。例如,在通知消息的發(fā)布者發(fā)布通知時,通常期望用戶可以通過通知欄點(diǎn)擊拉起目標(biāo)應(yīng)用組件。為了達(dá)成這一目標(biāo),開發(fā)者可以將WantAgent封裝至通知消息中,當(dāng)系統(tǒng)接收到WantAgent后,在用戶點(diǎn)擊通知欄時觸發(fā)WantAgent的意圖,從而拉起目標(biāo)應(yīng)用組件。
為通知添加行為意圖的實(shí)現(xiàn)方式如下圖所示:發(fā)布通知的應(yīng)用向應(yīng)用組件管理服務(wù)AMS(Ability Manager Service)申請WantAgent,然后隨其他通知信息一起發(fā)送給桌面,當(dāng)用戶在桌面通知欄上點(diǎn)擊通知時,觸發(fā)WantAgent動作。
圖1 攜帶行為意圖的通知運(yùn)行機(jī)制
具體接口描述,詳見WantAgent接口文檔。
接口名 | 描述 |
---|---|
getWantAgent(info: WantAgentInfo, callback: AsyncCallback<WantAgent>): void | 創(chuàng)建WantAgent。 |
trigger(agent: WantAgent, triggerInfo: TriggerInfo, callback?: Callback<CompleteData>): void | 觸發(fā)WantAgent意圖。 |
cancel(agent: WantAgent, callback: AsyncCallback<void>): void | 取消WantAgent。 |
getWant(agent: WantAgent, callback: AsyncCallback<Want>): void | 獲取WantAgent的want。 |
equal(agent: WantAgent, otherAgent: WantAgent, callback: AsyncCallback<boolean>): void | 判斷兩個WantAgent實(shí)例是否相等。 |
導(dǎo)入模塊。
- import NotificationManager from '@ohos.notificationManager';
- import wantAgent from '@ohos.app.ability.wantAgent';
創(chuàng)建WantAgentInfo信息。
場景一:創(chuàng)建拉起Ability的WantAgent的WantAgentInfo信息。
- let wantAgentObj = null; // 用于保存創(chuàng)建成功的wantAgent對象,后續(xù)使用其完成觸發(fā)的動作。
- // 通過WantAgentInfo的operationType設(shè)置動作類型。
- let wantAgentInfo = {
- wants: [
- {
- deviceId: '',
- bundleName: 'com.example.test',
- abilityName: 'com.example.test.MainAbility',
- action: '',
- entities: [],
- uri: '',
- parameters: {}
- }
- ],
- operationType: wantAgent.OperationType.START_ABILITY,
- requestCode: 0,
- wantAgentFlags:[wantAgent.WantAgentFlags.CONSTANT_FLAG]
- }
場景二:創(chuàng)建發(fā)布公共事件的WantAgent的WantAgentInfo信息。
- let wantAgentObj = null; // 用于保存創(chuàng)建成功的WantAgent對象,后續(xù)使用其完成觸發(fā)的動作。
- // wantAgentInfo
- let wantAgentInfo = {
- wants: [
- {
- action: 'event_name', // 設(shè)置事件名。
- parameters: {},
- }
- ],
- operationType: wantAgent.OperationType.SEND_COMMON_EVENT,
- requestCode: 0,
- wantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG],
- }
創(chuàng)建WantAgent。
- // 創(chuàng)建WantAgent
- wantAgent.getWantAgent(wantAgentInfo, (err, data) => {
- if (err) {
- console.error('[WantAgent]getWantAgent err=' + JSON.stringify(err));
- } else {
- console.info('[WantAgent]getWantAgent success');
- wantAgentObj = data;
- }
- });
構(gòu)造NotificationRequest對象。
- // 構(gòu)造NotificationRequest對象
- let notificationRequest = {
- content: {
- contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
- normal: {
- title: 'Test_Title',
- text: 'Test_Text',
- additionalText: 'Test_AdditionalText',
- },
- },
- id: 1,
- label: 'TEST',
- wantAgent: wantAgentObj,
- }
發(fā)布WantAgent通知。
- // 通知發(fā)送
- NotificationManager.publish(notificationRequest, (err) => {
- if (err) {
- console.error(`[ANS] failed to publish, error[${err}]`);
- return;
- }
- console.info(`[ANS] publish success `);
- });
用戶通過點(diǎn)擊通知欄上的通知,即可觸發(fā)WantAgent的動作。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: