• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.companion;
18 
19 import android.app.PendingIntent;
20 import android.companion.IAssociationRequestCallback;
21 import android.companion.IOnAssociationsChangedListener;
22 import android.companion.IOnMessageReceivedListener;
23 import android.companion.IOnTransportsChangedListener;
24 import android.companion.ISystemDataTransferCallback;
25 import android.companion.AssociationInfo;
26 import android.companion.AssociationRequest;
27 import android.companion.ObservingDevicePresenceRequest;
28 import android.companion.datatransfer.PermissionSyncRequest;
29 import android.content.ComponentName;
30 import android.os.ParcelUuid;
31 import android.companion.DeviceId;
32 
33 
34 /**
35  * Interface for communication with the core companion device manager service.
36  *
37  * @hide
38  */
39 interface ICompanionDeviceManager {
associate(in AssociationRequest request, in IAssociationRequestCallback callback, in String callingPackage, int userId)40     void associate(in AssociationRequest request, in IAssociationRequestCallback callback,
41         in String callingPackage, int userId);
42 
getAssociations(String callingPackage, int userId)43     List<AssociationInfo> getAssociations(String callingPackage, int userId);
44 
45     @EnforcePermission("MANAGE_COMPANION_DEVICES")
getAllAssociationsForUser(int userId)46     List<AssociationInfo> getAllAssociationsForUser(int userId);
47 
48     /** @deprecated */
legacyDisassociate(String deviceMacAddress, String callingPackage, int userId)49     void legacyDisassociate(String deviceMacAddress, String callingPackage, int userId);
50 
disassociate(int associationId)51     void disassociate(int associationId);
52 
53     /** @deprecated */
hasNotificationAccess(in ComponentName component)54     boolean hasNotificationAccess(in ComponentName component);
55 
requestNotificationAccess(in ComponentName component, int userId)56     PendingIntent requestNotificationAccess(in ComponentName component, int userId);
57 
58     @EnforcePermission("MANAGE_COMPANION_DEVICES")
isDeviceAssociatedForWifiConnection(in String packageName, in String macAddress, int userId)59     boolean isDeviceAssociatedForWifiConnection(in String packageName, in String macAddress,
60         int userId);
61 
62     @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")
legacyStartObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId)63     void legacyStartObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId);
64 
65     @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")
legacyStopObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId)66     void legacyStopObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId);
67 
68     @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")
startObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId)69     void startObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId);
70 
71     @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")
stopObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId)72     void stopObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId);
73 
canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId)74     boolean canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId);
75 
76     @EnforcePermission("ASSOCIATE_COMPANION_DEVICES")
createAssociation(in String packageName, in String macAddress, int userId, in byte[] certificate)77     void createAssociation(in String packageName, in String macAddress, int userId,
78         in byte[] certificate);
79 
80     @EnforcePermission("MANAGE_COMPANION_DEVICES")
addOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId)81     void addOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId);
82 
83     @EnforcePermission("MANAGE_COMPANION_DEVICES")
removeOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId)84     void removeOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId);
85 
86     @EnforcePermission("USE_COMPANION_TRANSPORTS")
addOnTransportsChangedListener(IOnTransportsChangedListener listener)87     void addOnTransportsChangedListener(IOnTransportsChangedListener listener);
88 
89     @EnforcePermission("USE_COMPANION_TRANSPORTS")
removeOnTransportsChangedListener(IOnTransportsChangedListener listener)90     void removeOnTransportsChangedListener(IOnTransportsChangedListener listener);
91 
92     @EnforcePermission("USE_COMPANION_TRANSPORTS")
sendMessage(int messageType, in byte[] data, in int[] associationIds)93     void sendMessage(int messageType, in byte[] data, in int[] associationIds);
94 
95     @EnforcePermission("USE_COMPANION_TRANSPORTS")
addOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener)96     void addOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener);
97 
98     @EnforcePermission("USE_COMPANION_TRANSPORTS")
removeOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener)99     void removeOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener);
100 
101     @EnforcePermission("REQUEST_COMPANION_SELF_MANAGED")
notifySelfManagedDeviceAppeared(int associationId)102     void notifySelfManagedDeviceAppeared(int associationId);
103 
104     @EnforcePermission("REQUEST_COMPANION_SELF_MANAGED")
notifySelfManagedDeviceDisappeared(int associationId)105     void notifySelfManagedDeviceDisappeared(int associationId);
106 
buildPermissionTransferUserConsentIntent(String callingPackage, int userId, int associationId)107     PendingIntent buildPermissionTransferUserConsentIntent(String callingPackage, int userId,
108         int associationId);
109 
isPermissionTransferUserConsented(String callingPackage, int userId, int associationId)110     boolean isPermissionTransferUserConsented(String callingPackage, int userId, int associationId);
111 
startSystemDataTransfer(String packageName, int userId, int associationId, in ISystemDataTransferCallback callback)112     void startSystemDataTransfer(String packageName, int userId, int associationId,
113         in ISystemDataTransferCallback callback);
114 
115     @EnforcePermission("DELIVER_COMPANION_MESSAGES")
attachSystemDataTransport(String packageName, int userId, int associationId, in ParcelFileDescriptor fd, int flags)116     void attachSystemDataTransport(String packageName, int userId, int associationId, in ParcelFileDescriptor fd, int flags);
117 
118     @EnforcePermission("DELIVER_COMPANION_MESSAGES")
detachSystemDataTransport(String packageName, int userId, int associationId)119     void detachSystemDataTransport(String packageName, int userId, int associationId);
120 
isCompanionApplicationBound(String packageName, int userId)121     boolean isCompanionApplicationBound(String packageName, int userId);
122 
buildAssociationCancellationIntent(in String callingPackage, int userId)123     PendingIntent buildAssociationCancellationIntent(in String callingPackage, int userId);
124 
enableSystemDataSync(int associationId, int flags)125     void enableSystemDataSync(int associationId, int flags);
126 
disableSystemDataSync(int associationId, int flags)127     void disableSystemDataSync(int associationId, int flags);
128 
enablePermissionsSync(int associationId)129     void enablePermissionsSync(int associationId);
130 
disablePermissionsSync(int associationId)131     void disablePermissionsSync(int associationId);
132 
getPermissionSyncRequest(int associationId)133     PermissionSyncRequest getPermissionSyncRequest(int associationId);
134 
135     @EnforcePermission("MANAGE_COMPANION_DEVICES")
enableSecureTransport(boolean enabled)136     void enableSecureTransport(boolean enabled);
137 
setDeviceId(int associationId, in DeviceId deviceId)138     void setDeviceId(int associationId, in DeviceId deviceId);
139 
getBackupPayload(int userId)140     byte[] getBackupPayload(int userId);
141 
applyRestoredPayload(in byte[] payload, int userId)142     void applyRestoredPayload(in byte[] payload, int userId);
143 
144     @EnforcePermission("BLUETOOTH_CONNECT")
removeBond(int associationId, in String packageName, int userId)145     boolean removeBond(int associationId, in String packageName, int userId);
146 }
147