BaseIDevicePolicyManager.java revision 26449eda7a5595bfb97e59d0734b61e1bbe6f55d
1031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova/* 2031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Copyright (C) 2017 The Android Open Source Project 3031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 4031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Licensed under the Apache License, Version 2.0 (the "License"); 5031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * you may not use this file except in compliance with the License. 6031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * You may obtain a copy of the License at 7031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 8031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * http://www.apache.org/licenses/LICENSE-2.0 9031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 10031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Unless required by applicable law or agreed to in writing, software 11031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * distributed under the License is distributed on an "AS IS" BASIS, 12031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * See the License for the specific language governing permissions and 14031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * limitations under the License. 15031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */ 16031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovapackage com.android.server.devicepolicy; 17031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova 187f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaruimport android.annotation.UserIdInt; 19031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaimport android.app.admin.IDevicePolicyManager; 200de748d833bef8e08329ef1abb9b681391e34ac8yuemingwimport android.content.ComponentName; 2108841efcdf4ff8cf5d743fd5f6f995730b5f876farangelovimport android.os.PersistableBundle; 22a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keymaster.KeymasterCertificateChain; 23a173064047d304837d907b9b39ece5c14adf2b25Eran Messeriimport android.security.keystore.ParcelableKeyGenParameterSpec; 24e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingwimport android.telephony.data.ApnSetting; 25031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova 26031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaimport com.android.server.SystemService; 27031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova 2804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shankaimport java.util.ArrayList; 29e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingwimport java.util.Collections; 307f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaruimport java.util.List; 317f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru 32031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova/** 33031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * Defines the required interface for IDevicePolicyManager implemenation. 34031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 35031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * <p>The interface consists of public parts determined by {@link IDevicePolicyManager} and also 36031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * several package private methods required by internal infrastructure. 37031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 38031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * <p>Whenever adding an AIDL method to {@link IDevicePolicyManager}, an empty override method 39031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * should be added here to avoid build breakage in downstream branches. 40031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */ 41031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtovaabstract class BaseIDevicePolicyManager extends IDevicePolicyManager.Stub { 42031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova /** 43031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * To be called by {@link DevicePolicyManagerService#Lifecycle} during the various boot phases. 44031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 45031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * @see {@link SystemService#onBootPhase}. 46031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */ 47031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova abstract void systemReady(int phase); 48031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova /** 49031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * To be called by {@link DevicePolicyManagerService#Lifecycle} when a new user starts. 50031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 51031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * @see {@link SystemService#onStartUser} 52031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */ 53031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova abstract void handleStartUser(int userId); 54031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova /** 55031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * To be called by {@link DevicePolicyManagerService#Lifecycle} when a user is being unlocked. 56031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 57031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * @see {@link SystemService#onUnlockUser} 58031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */ 59031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova abstract void handleUnlockUser(int userId); 60031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova /** 61031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * To be called by {@link DevicePolicyManagerService#Lifecycle} when a user is being stopped. 62031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * 63031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova * @see {@link SystemService#onStopUser} 64031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova */ 65031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova abstract void handleStopUser(int userId); 66a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri 670de748d833bef8e08329ef1abb9b681391e34ac8yuemingw public void setSystemSetting(ComponentName who, String setting, String value){} 6808841efcdf4ff8cf5d743fd5f6f995730b5f876farangelov 698bae4eaa4db74c71d5658d8ee1905be8ecf4dfc2arangelov public void transferOwnership(ComponentName admin, ComponentName target, PersistableBundle bundle) {} 70c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov 7191201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov public PersistableBundle getTransferOwnershipBundle() { 7291201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov return null; 7391201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov } 7491201bdbcab8a1010bf66e3dd03375bc4082ab18arangelov 75a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri public boolean generateKeyPair(ComponentName who, String callerPackage, String algorithm, 7694d56761249a8e8c073867c17bba59b4a898f113Eran Messeri ParcelableKeyGenParameterSpec keySpec, int idAttestationFlags, 7794d56761249a8e8c073867c17bba59b4a898f113Eran Messeri KeymasterCertificateChain attestationChain) { 78a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri return false; 79a173064047d304837d907b9b39ece5c14adf2b25Eran Messeri } 80c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov 817f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru @Override 827f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru public boolean setPasswordBlacklist(ComponentName who, String name, List<String> blacklist, 837f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru boolean parent) { 847f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru return false; 857f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru } 867f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru 877f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru @Override 887f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru public String getPasswordBlacklistName(ComponentName who, @UserIdInt int userId, 897f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru boolean parent) { 907f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru return null; 917f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru } 927f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru 937f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru @Override 947f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru public boolean isPasswordBlacklisted(@UserIdInt int userId, String password) { 957f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru return false; 967f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru } 977f31bb047820bd5bbf3baab461d24d49f1128052Alexandru-Andrei Rotaru 98c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov public boolean isUsingUnifiedPassword(ComponentName who) { 99c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov return true; 100c4f87e9ceb4d5ce78c1663912bc166e0d41554aaPavel Grafov } 101ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri 102ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri public boolean setKeyPairCertificate(ComponentName who, String callerPackage, String alias, 103ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri byte[] cert, byte[] chain, boolean isUserSelectable) { 104ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri return false; 105ecf0f22e5831832afb48c86abfaa81234c8db619Eran Messeri } 106b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau 107b6ef86985dd79923c08ea6ecb1c8c56fa76b5193Alex Chau @Override 10893ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau public void setStartUserSessionMessage( 10993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau ComponentName admin, CharSequence startUserSessionMessage) {} 11093ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau 11193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau @Override 11293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau public void setEndUserSessionMessage(ComponentName admin, CharSequence endUserSessionMessage) {} 11393ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau 11493ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau @Override 11593ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau public String getStartUserSessionMessage(ComponentName admin) { 11693ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau return null; 11793ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau } 11893ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau 11993ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau @Override 12093ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau public String getEndUserSessionMessage(ComponentName admin) { 12193ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau return null; 12293ae42b04debca35cdc23feef0cf54c9e6ca4400Alex Chau } 123792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov 124792d58fbcef3da36dbde5fd8b0cf5a5b972bd12eVladislav Kuzkokov @Override 12504d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka public List<String> setMeteredDataDisabled(ComponentName admin, List<String> packageNames) { 12604d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka return packageNames; 12704d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka } 12804d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka 12904d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka @Override 13004d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka public List<String> getMeteredDataDisabled(ComponentName admin) { 13104d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka return new ArrayList<>(); 13204d61ae6c3ea1ddba22a8557f2fa372cd13b26efSudheer Shanka } 133e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw 134e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw @Override 135e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw public int addOverrideApn(ComponentName admin, ApnSetting apnSetting) { 136e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw return -1; 137e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw } 138e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw 139e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw @Override 140e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw public boolean updateOverrideApn(ComponentName admin, int apnId, ApnSetting apnSetting) { 141e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw return false; 142e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw } 143e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw 144e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw @Override 145e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw public boolean removeOverrideApn(ComponentName admin, int apnId) { 146e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw return false; 147e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw } 148e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw 149e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw @Override 150e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw public List<ApnSetting> getOverrideApns(ComponentName admin) { 151e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw return Collections.emptyList(); 152e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw } 153e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw 154e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw @Override 155e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw public void setOverrideApnsEnabled(ComponentName admin, boolean enabled) {} 156e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw 157e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw @Override 158e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw public boolean isOverrideApnEnabled(ComponentName admin) { 159e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw return false; 160e3d9c099e5b27779ea112408e5a74599d1cfc8ecyuemingw } 16129b9a7d1f4168d888ee2f4a0ff3882523f655e6bRubin Xu 16229b9a7d1f4168d888ee2f4a0ff3882523f655e6bRubin Xu public void clearSystemUpdatePolicyFreezePeriodRecord() { 16329b9a7d1f4168d888ee2f4a0ff3882523f655e6bRubin Xu } 1645be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka 1655be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka @Override 1665be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka public boolean isMeteredDataDisabledForUser(ComponentName admin, 1675be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka String packageName, int userId) { 1685be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka return false; 1695be44ff31c4cdd68d5b131beeb3df9924cef9c82Sudheer Shanka } 1705bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov 1715bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov @Override 1725bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov public long forceSecurityLogs() { 1735bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov return 0; 1745bb5a6219dae39d929bca08623c23fc5800dd3b7Pavel Grafov } 17526449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks 17626449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks @Override 17726449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks public void setDefaultSmsApplication(ComponentName admin, String packageName) { 17826449eda7a5595bfb97e59d0734b61e1bbe6f55dChristine Franks } 179031a2f1aafbc4e39ab5601567862d498e8949538Lenka Trochtova} 180