2021-02-06鴻蒙開發(fā)(二.六)

Operation
根據(jù)Operation的其他屬性啟動(dòng)應(yīng)用

有些場(chǎng)景下,開發(fā)者需要在應(yīng)用中使用其他應(yīng)用提供的某種能力,而不感知提供該能力的具體是哪一個(gè)應(yīng)用。例如開發(fā)者需要通過(guò)瀏覽器打開一個(gè)鏈接,而不關(guān)心用戶最終選擇哪一個(gè)瀏覽器應(yīng)用,則可以通過(guò)Operation的其他屬性(除BundleName與AbilityName之外的屬性)描述需要的能力。如果設(shè)備上存在多個(gè)應(yīng)用提供同種能力,系統(tǒng)則彈出候選列表,由用戶選擇由哪個(gè)應(yīng)用處理請(qǐng)求。以下示例展示使用Intent跨Ability查詢天氣信息。
請(qǐng)求方
在Ability中構(gòu)造Intent以及包含Action的Operation對(duì)象,并調(diào)用startAbilityForResult()方法發(fā)起請(qǐng)求。然后重寫onAbilityResult()回調(diào)方法,對(duì)請(qǐng)求結(jié)果進(jìn)行

private void queryWeather() {
    Intent intent = new Intent();
    Operation operation = new Intent.OperationBuilder()
            .withAction(Intent.ACTION_QUERY_WEATHER)
            .build();
    intent.setOperation(operation);
    startAbilityForResult(intent, REQ_CODE_QUERY_WEATHER);
}

@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) {
    switch (requestCode) {
        case REQ_CODE_QUERY_WEATHER:
            // Do something with result.
            ...
            return;
        default:
            ...
    }
}

處理方

作為處理請(qǐng)求的對(duì)象,首先需要在配置文件中聲明對(duì)外提供的能力,以便系統(tǒng)據(jù)此找到自身并作為候選的請(qǐng)求處理者。

{
    "module": {
        ...
        "abilities": [
            {
                ...
                "skills":[
                    {
                        "actions":[
                            "ability.intent.QUERY_WEATHER"
                        ]
                    }
                ]
                ...
            }
        ]
        ...
    }
    ...
}

在Ability中配置路由以便支持以此action導(dǎo)航到對(duì)應(yīng)的AbilitySlice。

@Override
protected void onStart(Intent intent) {
    ...
    addActionRoute(Intent.ACTION_QUERY_WEATHER, DemoSlice.class.getName());
    ...
}

在Ability中處理請(qǐng)求,并調(diào)用setResult()方法暫存返回結(jié)果。

@Override
protected void onActive() {
    ...
    Intent resultIntent = new Intent();
    setResult(0, resultIntent);
    ...
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容