日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSIntentAgent開發(fā)指導

場景介紹

IntentAgent封裝了一個指定行為的 Intent,可以通過 triggerIntentAgent 接口主動觸發(fā),也可以與通知綁定被動觸發(fā)。具體的行為包括:啟動 Ability 和發(fā)送公共事件。例如:收到通知后,在點擊通知后跳轉(zhuǎn)到一個新的 Ability,不點擊則不會觸發(fā)。

接口說明

IntentAgent 相關(guān)基礎(chǔ)類包括 IntentAgentHelper、 IntentAgentInfo、 IntentAgentConstant 和 TriggerInfo,基礎(chǔ)類之間的關(guān)系如下圖所示:

圖1 IntentAgent 基礎(chǔ)類關(guān)系圖

  • IntentAgentHelper

IntentAgentHelper封裝了獲取、激發(fā)、取消IntentAgent等靜態(tài)方法。

接口名 描述
getIntentAgent(Context context, IntentAgentInfo paramsInfo) 獲取一個 IntentAgent 實例。
triggerIntentAgent(Context context, IntentAgent agent, IntentAgent.Oncompleted onCompleted, EventHandler handler, TriggerInfo paramsInfo) 主動激發(fā)一個 IntentAgent 實例。
cancel(IntentAgent agent) 取消一個 IntentAgent 實例。
judgeEquality(IntentAgent agent, IntentAgent otherAgent) 判斷兩個 IntentAgent 實例是否相等。
getHashCode(IntentAgent agent) 獲取一個 IntentAgent 實例的哈希碼。
getBundleName(IntentAgent agent) 獲取一個 IntentAgent 實例的包名。
getUid(IntentAgent agent) 獲取一個 IntentAgent 實例的用戶ID。
  • IntentAgentInfo

IntentAgentInfo 類封裝了獲取一個 IntentAgent 實例所需的數(shù)據(jù)。使用構(gòu)造函數(shù) IntentAgentInfo(int requestCode, OperationType operationType, List flags, List intents, IntentParams extraInfo) 獲取 IntentAgentInfo 對象。

  • requestCode:使用者定義的一個私有值。
  • operationType:為 IntentAgentConstant.OperationType 枚舉中的值。
  • flags:為 IntentAgentConstant.Flags 枚舉中的值。
  • intents:將被執(zhí)行的意圖列表。operationType 的值為 START_ABILITY,START_SERVICE 和 SEND_COMMON_EVENT 時,intents 列表只允許包含一個 Intent;operationType 的值為 START_ABILITIES 時,intents 列表允許包含多個 Intent
  • extraInfo:表明如何啟動一個有頁面的 ability,可以為 null,只在operationType 的值為 START_ABILITY 和 START_ABILITIES 時有意義。
  • IntentAgentConstant

IntentAgentConstant 類中包含 OperationType 和 Flags 兩個枚舉類:

類名 枚舉值
IntentAgentConstant.OperationType UNKNOWN_TYPE:不識別的類型。START_ABILITY:開啟一個有頁面的 Ability。START_ABILITIES:開啟多個有頁面的 Ability。START_SERVICE:開啟一個無頁面的 ability。SEND_COMMON_EVENT:發(fā)送一個公共事件。
IntentAgentConstant.Flags ONE_TIME_FLAG:IntentAgent 僅能使用一次。只在 operationType 的值為 START_ABILITY,START_SERVICE 和 SEND_COMMON_EVENT 時有意義。NO_BUILD_FLAG:如果描述 IntentAgent 對象不存在,則不創(chuàng)建它,直接返回 null。只在 operationType 的值為 START_ABILITY, START_SERVICE 和 SEND_COMMON_EVENT 時有意義。CANCEL_PRESENT_FLAG:在生成一個新的IntentAgent 對象前取消已存在的一個 IntentAgent 對象。只在 operationType 的值為 START_ABILITY,START_SERVICE 和 SEND_COMMON_EVENT 時有意義。 UPDATE_PRESENT_FLAG:使用新的 IntentAgent 的額外數(shù)據(jù)替換已存在的 IntentAgent 中的額外數(shù)據(jù)。只在 operationType 的值為 START_ABILITY,START_SERVICE 和 SEND_COMMON_EVENT 時有意義。CONSTANT_FLAG:IntentAgent 是不可變的。 REPLACE_ELEMENT:當前I ntent 中的 element 屬性可被 IntentAgentHelper.triggerIntentAgent() 中 Intent 的 element 屬性取代。 REPLACE_ACTION: 當前 Intent 中的 action 屬性可被 IntentAgentHelper.triggerIntentAgent()中 Intent 的 action 屬性取代。 REPLACE_URI:當前 Intent 中的 uri 屬性可被 IntentAgentHelper.triggerIntentAgent() 中 Intent 的 uri 屬性取代。 REPLACE_ENTITIES:當前 Intent 中的 entities 屬性可被 IntentAgentHelper.triggerIntentAgent() 中 Intent 的 entities 屬性取代。 REPLACE_BUNDLE:當前 Intent 中的 bundleName 屬性可被 IntentAgentHelper.triggerIntentAgent() 中 Intent 的 bundleName 屬性取代。
  • TriggerInfo

TriggerInfo 類封裝了主動激發(fā)一個 IntentAgent 實例所需的數(shù)據(jù),使用構(gòu)造函數(shù)TriggerInfo( String permission, IntentParams extraInfo, Intent intent, int code) 獲取 TriggerInfo 對象。

  • permission:IntentAgent 的接收者的權(quán)限名稱,只在 operationType 的值為 SEND_COMMON_EVENT 時,該參數(shù)才有意義。
  • extraInfo:激發(fā) IntentAgent 時用戶自定義的額外數(shù)據(jù)。
  • intent:額外的 Intent。如果 IntentAgentInfo 成員變量 flags 包含CONSTANT_FLAG,則忽略該參數(shù);如果 flags 包含 REPLACE_ELEMENT,REPLACE_ACTION,REPLACE_URI,REPLACE_ENTITIES 或 REPLACE_BUNDLE,則使用額外 Intent 的 element,action,uri,entities 或 bundleName 屬性替換原始 Intent 中對應(yīng)的屬性。如果 intent 是空,則不替換原始 Intent 的屬性。
  • code:提供給 IntentAgent 目標的結(jié)果碼。

開發(fā)步驟

獲取 IntentAgent 的代碼示例如下:

// 指定要啟動的Ability的BundleName和AbilityName字段
// 將Operation對象設(shè)置到Intent中
Operation operation = new Intent.OperationBuilder()
        .withDeviceId("")
        .withBundleName("com.huawei.testintentagent")
        .withAbilityName("com.huawei.testintentagent.entry.IntentAgentAbility")
        .build();
intent.setOperation(operation);
List intentList = new ArrayList<>();
intentList.add(intent);
// 定義請求碼
int requestCode = 200;
// 設(shè)置flags
List flags = new ArrayList<>();
flags.add(Flags.UPDATE_PRESENT_FLAG);
// 指定啟動一個有頁面的Ability
IntentAgentInfo paramsInfo = new IntentAgentInfo(requestCode, IntentAgentConstant.OperationType.START_ABILITY, flags, intentList, null);
// 獲取IntentAgent實例
IntentAgent agent = IntentAgentHelper.getIntentAgent(this, paramsInfo);

通知中添加 IntentAgent 的代碼示例如下:

int notificationId = 1;
NotificationRequest request = new NotificationRequest(notificationId);
String title = "title";
String text = "There is a normal notification content.";
NotificationNormalContent content = new NotificationNormalContent();
content.setTitle(title)
       .setText(text);
NotificationContent notificationContent = new NotificationContent(content);
request.setContent(notificationContent); // 設(shè)置通知的內(nèi)容
request.setIntentAgent(agent); // 設(shè)置通知的 IntentAgent

主動激發(fā) IntentAgent 的代碼示例如下:

int code = 100;
IntentAgentHelper.triggerIntentAgent(this, agent, null, null, new TriggerInfo(null, null, null, code ));

本文名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSIntentAgent開發(fā)指導
新聞來源:http://www.5511xx.com/article/cogsgig.html