Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
5dd67109
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
5dd67109
编写于
3月 25, 2022
作者:
Q
ql
提交者:
Gitee
3月 25, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/application-dev/ability/fa-serviceability.md.
Signed-off-by:
N
ql
<
qianli16@huawei.com
>
上级
0d43334c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
8 deletion
+59
-8
zh-cn/application-dev/ability/fa-serviceability.md
zh-cn/application-dev/ability/fa-serviceability.md
+59
-8
未找到文件。
zh-cn/application-dev/ability/fa-serviceability.md
浏览文件 @
5dd67109
...
...
@@ -180,7 +180,7 @@ export default {
}
```
### 连接远程Service<a name="section126857614019"></a>
### 连接远程Service<a name="section126857614019"></a>
(当前仅对系统应用开放)
如果Service需要与Page Ability或其他应用的Service Ability进行跨设备交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行跨设备连接。
...
...
@@ -188,7 +188,7 @@ export default {
创建连接远程Service回调实例的代码示例如下:
```
javascript
```
ts
var
mRemote
;
function
onConnectCallback
(
element
,
remote
){
console
.
log
(
'
ConnectRemoteAbility onConnect Callback
'
)
...
...
@@ -204,17 +204,33 @@ function onFailedCallback(code){
}
```
目标Service的Want需要包含远程deviceId,该远程deviceId可通过deviceManager获取。
目标Service的Want需要包含远程deviceId,该远程deviceId可通过deviceManager获取,具体示例代码如下:
```
ts
function
getRemoteDeviceId
()
{
if
(
typeof
dmClass
===
'
object
'
&&
dmClass
!=
null
)
{
var
list
=
dmClass
.
getTrustedDeviceListSync
();
if
(
typeof
(
list
)
==
'
undefined
'
||
typeof
(
list
.
length
)
==
'
undefined
'
)
{
console
.
log
(
"
MainAbility onButtonClick getRemoteDeviceId err: list is null
"
);
return
;
}
console
.
log
(
"
MainAbility onButtonClick getRemoteDeviceId success:
"
+
list
[
0
].
deviceId
);
return
list
[
0
].
deviceId
;
}
else
{
console
.
log
(
"
MainAbility onButtonClick getRemoteDeviceId err: dmClass is null
"
);
}
}
```
连接远程Service的代码示例如下:
```
javascript
```
ts
import
featureAbility
from
'
@ohos.ability.featureability
'
;
var
connId
=
featureAbility
.
connectAbility
(
{
deviceId
:
deviceId
,
bundleName
:
"
com.jstest.serviceability
"
,
abilityName
:
"
com.jstest.serviceability.Main
Ability
"
,
deviceId
:
getRemoteDeviceId
()
,
bundleName
:
"
ohos.samples.etsDemo
"
,
abilityName
:
"
ohos.samples.etsDemo.Service
Ability
"
,
},
{
onConnect
:
onConnectCallback
,
...
...
@@ -223,12 +239,47 @@ var connId = featureAbility.connectAbility(
},
);
```
在跨设备场景下,需要向用户申请数据同步的权限。具体示例代码如下:
```
ts
async
function
RequestPermission
()
{
console
.
info
(
'
RequestPermission begin
'
);
let
array
:
Array
<
string
>
=
[
"
ohos.permission.DISTRIBUTED_DATASYNC
"
];
var
bundleFlag
=
0
;
var
tokenID
=
undefined
;
var
userID
=
100
;
var
appInfo
=
await
bundle
.
getApplicationInfo
(
'
ohos.samples.etsDemo
'
,
bundleFlag
,
userID
);
tokenID
=
appInfo
.
accessTokenId
;
var
atManager
=
abilityAccessCtrl
.
createAtManager
();
let
requestPermissions
:
Array
<
string
>
=
[];
for
(
let
i
=
0
;
i
<
array
.
length
;
i
++
)
{
var
result
=
await
atManager
.
verifyAccessToken
(
tokenID
,
array
[
i
]);
console
.
info
(
"
verifyAccessToken result:
"
+
JSON
.
stringify
(
result
));
if
(
result
==
abilityAccessCtrl
.
GrantStatus
.
PERMISSION_GRANTED
)
{
}
else
{
requestPermissions
.
push
(
array
[
i
]);
}
}
console
.
info
(
"
requestPermissions:
"
+
JSON
.
stringify
(
requestPermissions
));
if
(
requestPermissions
.
length
==
0
||
requestPermissions
==
[])
{
return
;
}
let
context
=
featureAbility
.
getContext
();
context
.
requestPermissionsFromUser
(
requestPermissions
,
1
,
(
data
)
=>
{
console
.
info
(
"
data:
"
+
JSON
.
stringify
(
data
));
console
.
info
(
"
data requestCode:
"
+
data
.
requestCode
);
console
.
info
(
"
data permissions:
"
+
data
.
permissions
);
console
.
info
(
"
data authResults:
"
+
data
.
authResults
);
});
console
.
info
(
'
RequestPermission end
'
);
}
```
同时,Service侧也需要在onConnect()时返回IRemoteObject,从而定义与Service进行通信的接口。onConnect()需要返回一个IRemoteObject对象,OpenHarmony提供了IRemoteObject的默认实现,用户可以通过继承rpc.RemoteObject来创建自定义的实现类。
Service侧把自身的实例返回给调用侧的代码示例如下:
```
javascript
```
ts
import
rpc
from
"
@ohos.rpc
"
;
var
mMyStub
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录