鸿蒙开发接口Ability框架:【(AbilityContext)】

电子说

1.2w人已加入

描述

AbilityContext

AbilityContext是Ability的上下文环境,继承自Context。

AbilityContext模块提供允许访问特定于ability的资源的能力,包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。

说明:

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块接口仅可在Stage模型下使用。

使用说明

在使用AbilityContext的功能前,需要通过Ability子类实例获取。

import Ability from '@ohos.application.Ability'
class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
        let context = this.context;
    }
}

开发前请熟悉鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]点击或者复制转到。

属性

系统能力 :以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

名称参数类型可读可写说明
abilityInfoAbilityInfoAbilityinfo相关信息
currentHapModuleInfoHapModuleInfo当前hap包的信息
config[Configuration]表示配置信息。

AbilityContext.startAbility

startAbility(want: Want, callback: AsyncCallback): void

启动Ability。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
callbackAsyncCallbackcallback形式返回启动结果

示例:

var want = {
	"deviceId": "",
	"bundleName": "com.extreme.test",
	"abilityName": "MainAbility"
};
this.context.startAbility(want, (error) = > {
    console.log("error.code = " + error.code)
})

AbilityContext.startAbility

startAbility(want: Want, options: StartOptions, callback: AsyncCallback): void

启动Ability。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
optionsStartOptions启动Ability所携带的参数。
callbackAsyncCallbackcallback形式返回启动结果。

示例:

var want = {
	"deviceId": "",
	"bundleName": "com.extreme.test",
	"abilityName": "MainAbility"
};
var options = {
	windowMode: 0,
};
this.context.startAbility(want, options, (error) = > {
    console.log("error.code = " + error.code)
})

AbilityContext.startAbility

startAbility(want: Want, options?: StartOptions): Promise;

启动Ability。通过Promise返回结果。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
optionsStartOptions启动Ability所携带的参数。

返回值:

类型说明
PromisePromise形式返回启动结果。

示例:

var want = {
	"deviceId": "",
	"bundleName": "com.extreme.test",
	"abilityName": "MainAbility"
};
var options = {
	windowMode: 0,
};
this.context.startAbility(want, options)
.then((data) = > {
    console.log('Operation successful.')
}).catch((error) = > {
    console.log('Operation failed.');
})

AbilityContext.startAbilityForResult

startAbilityForResult(want: Want, callback: AsyncCallback): void;

启动Ability并在结束的时候返回执行结果。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
callbackAsyncCallback[AbilityResult执行结果回调函数。

示例:

this.context.startAbilityForResult(
    {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"},
    (error, result) = > {
        console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code)
        console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode)
     }
);

AbilityContext.startAbilityForResult

startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback): void;

启动Ability并在结束的时候返回执行结果。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
optionsStartOptions启动Ability所携带的参数。
callbackAsyncCallback[AbilityResult]执行结果回调函数。

示例:

var options = {
  windowMode: 0,
};
this.context.startAbilityForResult(
    {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options,
    (error, result) = > {
        console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code)
        console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode)
     }
);

AbilityContext.startAbilityForResult

startAbilityForResult(want: Want, options?: StartOptions): Promise;

启动Ability并在结束的时候返回执行结果。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
optionsStartOptions启动Ability所携带的参数。

返回值:

类型说明
Promise[AbilityResult]Promise形式返回执行结果。

示例:

var options = {
  windowMode: 0,
};
this.context.startAbilityForResult({bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options).then((result) = > {
    console.log("startAbilityForResult Promise.resolve is called, result.resultCode = " + result.resultCode)
}, (error) = > {
    console.log("startAbilityForResult Promise.Reject is called, error.code = " + error.code)
})

AbilityContext.startAbilityForResultWithAccount

startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;

启动一个Ability并在该Ability帐号销毁时返回执行结果(callback形式)。

需要权限 : ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
callbackAsyncCallback启动Ability的回调函数,返回Ability结果。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
this.context.startAbilityWithAccount(want, accountId, (err, data) = > {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
  console.log('---------- startAbilityWithAccount success, data:  -----------', data);
});

AbilityContext.startAbilityForResultWithAccount

startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback): void;

启动一个Ability并在该Ability帐号销毁时返回执行结果(callback形式)。

需要权限 : ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
options[StartOptions]启动Ability所携带的参数。
callbackAsyncCallback启动Ability的回调函数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityForResultWithAccount(want, accountId, options, (err) = > {
  console.log('---------- startAbilityForResultWithAccount fail, err:  -----------', err);
});

AbilityContext.startAbilityForResultWithAccount

startAbilityForResultWithAccount(want: Want, accountId: number, options?: StartOptions): Promise;

启动一个Ability并在该Ability帐号销毁时返回执行结果(callback形式)。

需要权限 : ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
options[StartOptions]启动Ability所携带的参数。

返回值:

类型说明
Promise返回一个Promise,包含Ability结果。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityForResultWithAccount(want, accountId, options)
  .then((data) = > {
      console.log('---------- startAbilityForResultWithAccount success, data:  -----------', data);
  })
  .catch((err) = > {
      console.log('---------- startAbilityForResultWithAccount fail, err:  -----------', err);
  })

AbilityContext.terminateSelf

terminateSelf(callback: AsyncCallback): void;

停止Ability自身。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
callbackAsyncCallback回调函数,返回接口调用是否成功的结果。

示例:

this.context.terminateSelf((err) = > {
    console.log('terminateSelf result:' + JSON.stringify(err));
});

AbilityContext.terminateSelf

terminateSelf(): Promise;

停止Ability自身。通过Promise返回结果。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

返回值:

类型说明
Promise返回一个Promise,包含接口的结果。

示例:

this.context.terminateSelf().then((data) = > {
    console.log('success:' + JSON.stringify(data));
}).catch((error) = > {
    console.log('failed:' + JSON.stringify(error));
});

AbilityContext.terminateSelfWithResult

terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback): void;

停止Ability,并返回给调用startAbilityForResult 接口调用方的相关信息。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
parameter[AbilityResult]返回给调用startAbilityForResult 接口调用方的相关信息。
callbackAsyncCallbackcallback形式返回停止结果。

示例:

this.context.terminateSelfWithResult(
   {
        want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"},
        resultCode: 100
    }, (error) = > {
        console.log("terminateSelfWithResult is called = " + error.code)
    }
);

AbilityContext.terminateSelfWithResult

terminateSelfWithResult(parameter: AbilityResult): Promise;

停止Ability,并返回给调用startAbilityForResult 接口相关信息。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
parameter[AbilityResult]返回给startAbilityForResult 调用方的信息。

返回值:

类型说明
Promisepromise形式返回停止结果。

示例:

this.context.terminateSelfWithResult(
{
    want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"},
    resultCode: 100
}).then((result) = > {
    console.log("terminateSelfWithResult")
}
)

AbilityContext.connectAbility

connectAbility(want: Want, options: ConnectOptions): number;

使用AbilityInfo.AbilityType.SERVICE模板将当前能力连接到一个能力。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
options[ConnectOptions]远端对象实例。

返回值:

类型说明
number返回Ability连接的结果code。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var options = {
  onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
  onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
  onFailed(code) { console.log('----------- onFailed -----------') }
}
const result = this.context.connectAbility(want, options);
console.log('----------- connectAbilityResult: ------------', result);

AbilityContext.connectAbilityWithAccount

connectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;

使用AbilityInfo.AbilityType.SERVICE模板和account将当前能力连接到一个能力。

需要权限: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
options[ConnectOptions]远端对象实例。

返回值:

类型说明
number返回Ability连接的结果code。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
  onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
  onFailed(code) { console.log('----------- onFailed -----------') }
}
const result = this.context.connectAbilityWithAccount(want, accountId, options);
console.log('----------- connectAbilityResult: ------------', result);

AbilityContext.disconnectAbility

disconnectAbility(connection: number): Promise;

已成功连接接口。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
connectionnumber连接的能力的数字代码。

返回值:

类型说明
Promise返回执行结果。

示例:

var connectionNumber = 0;
this.context.disconnectAbility(connectionNumber).then((data) = > {
     console.log('disconnectAbility success, data: ', data);
}).catch((err) = > {
     console.log('disconnectAbility fail, err: ', err);
});

AbilityContext.disconnectAbility

disconnectAbility(connection: number, callback:AsyncCallback): void;

已成功连接接口。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
connectionnumber连接的能力的数字代码。
callbackAsyncCallback表示指定的回调方法。

示例:

var connectionNumber = 0;
  this.context.disconnectAbility(connectionNumber, (err) = > {
     console.log('---------- disconnectAbility fail, err: -----------', err);
  });

AbilityContext.startAbilityByCall

startAbilityByCall(want: Want): Promise;

获取指定通用组件服务端的caller通信接口, 并且将指定通用组件服务端拉起并切换到后台。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
want[Want]传入需要启动的ability的信息,包含ability名称、包名、设备ID,设备ID缺省或为空表示启动本地ability。

返回值:

类型说明
Promise获取要通讯的caller对象。

示例:

import Ability from '@ohos.application.Ability';
var caller;
export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
        this.context.startAbilityByCall({
            bundleName: "com.example.myservice",
            abilityName: "MainAbility",
            deviceId: ""
        }).then((obj) = > {
            caller = obj;
            console.log('Caller GetCaller Get ' + caller);
        }).catch((e) = > {
            console.log('Caller GetCaller error ' + e);
        });
    }
}

AbilityContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;

根据account启动Ability(callback形式)。

需要权限 : ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
callbackAsyncCallback启动Ability的回调函数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
this.context.startAbilityWithAccount(want, accountId, (err) = > {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
});

AbilityContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback): void;

根据account启动Ability(callback形式)。

需要权限 : ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
options[StartOptions]启动Ability所携带的参数。
callbackAsyncCallback启动Ability的回调函数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityWithAccount(want, accountId, options, (err) = > {
  console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
});

AbilityContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise;

根据account启动Ability(Promise形式)。

需要权限 : ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
want[Want]启动Ability的want信息。
accountIdnumber需要启动的accountId。
options[StartOptions]启动Ability所携带的参数。

示例:

var want = {
  "deviceId": "",
  "bundleName": "com.extreme.test",
  "abilityName": "MainAbility"
};
var accountId = 100;
var options = {
  windowMode: 0,
};
this.context.startAbilityWithAccount(want, accountId, options)
  .then((data) = > {
      console.log('---------- startAbilityWithAccount success, data:  -----------', data);
  })
  .catch((err) = > {
      console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
  })

AbilityContext.requestPermissionsFromUser

requestPermissionsFromUser(permissions: Array, requestCallback: AsyncCallback) : void;

拉起弹窗请求用户授权。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
permissionsArray权限列表。
callbackAsyncCallback[PermissionRequestResult]回调函数,返回接口调用是否成功的结果。

示例:

var permissions=['com.example.permission']
     this.context.requestPermissionsFromUser(permissions,(result) = > {
     console.log('requestPermissionsFromUserresult:' + JSON.stringify(result));
});

AbilityContext.requestPermissionsFromUser

requestPermissionsFromUser(permissions: Array) : Promise;

拉起弹窗请求用户授权。通过Promise返回结果。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
permissionsArray权限列表。

返回值:

类型说明
Promise[PermissionRequestResult]返回一个Promise,包含接口的结果。

示例:

var permissions=['com.example.permission']
     this.context.requestPermissionsFromUser(permissions).then((data) = > {
    console.log('success:' + JSON.stringify(data));
}).catch((error) = > {
    console.log('failed:' + JSON.stringify(error));
});

AbilityContext.setMissionLabel

setMissionLabel(label: string, callback:AsyncCallback): void;

设置ability在任务中显示的名称。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
labelstring显示名称。
callbackAsyncCallback回调函数,返回接口调用是否成功的结果。

示例:

this.context.setMissionLabel("test",(result) = > {
    console.log('requestPermissionsFromUserresult:' + JSON.stringify(result));
});

AbilityContext.setMissionLabel

setMissionLabel(label: string): Promise

设置ability在任务中显示的名称。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
labelstring显示名称。

返回值:

类型说明
Promise返回一个Promise,包含接口的结果。

示例:

this.context.setMissionLabel("test").then((data) = > {
    console.log('success:' + JSON.stringify(data));
}).catch((error) = > {
    console.log('failed:' + JSON.stringify(error));
});

AbilityContext.setMissionIcon

setMissionIcon(icon: image.PixelMap, callback:AsyncCallback): void;

设置当前ability的任务标签。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
iconimage.PixelMap在最近的任务中显示的能力图标。
callbackAsyncCallback指定的回调函数的结果。

示例:

import image from '@ohos.multimedia.image'
  var imagePixelMap;
  var color = new ArrayBuffer(0);
  var initializationOptions = {
     size: {
         height: 100,
         width: 100
     }
  };
  image.createPixelMap(color, initializationOptions)
     .then((data) = > {
         imagePixelMap = data;
     })
     .catch((err) = > {
         console.log('--------- createPixelMap fail, err: ---------', err)
     });
  this.context.setMissionIcon(imagePixelMap, (err) = > {
     console.log('---------- setMissionIcon fail, err: -----------', err);
  })

AbilityContext.setMissionIcon

setMissionIcon(icon: image.PixelMap): Promise;

设置当前ability的任务标签。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

系统API : 此接口为系统接口,三方应用不支持调用。

参数:

参数名类型必填说明
iconimage.PixelMap在最近的任务中显示的能力图标。

返回值:

类型说明
Promise返回一个Promise,包含接口的结果。

示例:

import image from '@ohos.multimedia.image'
  var imagePixelMap;
  var color = new ArrayBuffer(0);
  var initializationOptions = {
    size: {
        height: 100,
        width: 100
    }
  };
  image.createPixelMap(color, initializationOptions)
    .then((data) = > {
        imagePixelMap = data;
    })
    .catch((err) = > {
        console.log('--------- createPixelMap fail, err: ---------', err)
    });
  this.context.setMissionIcon(imagePixelMap)
    .then((data) = > {
        console.log('-------------- setMissionIcon success, data: -------------', data);
    })
    .catch((err) = > {
        console.log('-------------- setMissionIcon fail, err: -------------', err);
    });

AbilityContext.restoreWindowStage

restoreWindowStage(localStorage: LocalStorage) : void;

恢复ability中的window stage数据。

系统能力 :SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名类型必填说明
localStorageimage.LocalStorage用于恢复window stage的存储数据。

框架

示例:

var storage = new LocalStorage();
  this.context.restoreWindowStage(storage);

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分