grpc / grpc/grpc-java

Extend BinderChannel to support cross-user communication and introduce BinderChannelCredentials (io.grpc.binder.*) in experimental.

Open
#10,173 3 comments 0 reactions 0 assignees View on GitHub
experimental API
Dominant language
Java
Stars
12.1k
Forks
4k
Avg merge
2d 17h
Merged PRs (30d)
37

Description

BinderChannel, as specified in [gRFC L73](https://github.com/grpc/proposal/blob/master/L73-java-binderchannel.md) only supports the cross-process communication within the same Android user. However, some special Android applications need to do cross-user communication either using [Context.bindServiceAsUser](https://developer.android.com/reference/android/content/Context#bindServiceAsUser(android.content.Intent,%20android.content.ServiceConnection,%20int,%20android.os.UserHandle)) or [DevicePolicyManager.bindDeviceAdminServiceAsUser](https://developer.android.com/reference/android/app/admin/DevicePolicyManager#bindDeviceAdminServiceAsUser(android.content.ComponentName,%20android.content.Intent,%20android.content.ServiceConnection,%20int,%20android.os.UserHandle)).

TargetUserHandle is introduced in BinderChannel to enhance this use case. In the meanwhile BinderChannelCredentials is introduced in experimental stage to capture arbitrary arguments needed by DevicePolicyManager or other Android components to establish a binder connection.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.