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