blob: 235b0830b9aaa4cc80d74949c9493487a21ab122 [file] [log] [blame]
Todd Kennedy8f135982019-07-02 07:35:15 -07001/*
2 * Copyright (C) 2019 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
17package android.permission;
18
Todd Kennedy1d29b4a2019-07-02 14:49:28 -070019import android.content.pm.ParceledListSlice;
20import android.content.pm.PermissionGroupInfo;
21import android.content.pm.PermissionInfo;
Anthony Hughde787d42019-08-22 15:35:48 -070022import android.content.pm.permission.SplitPermissionInfoParcelable;
Evan Seversonb252d8b2019-11-20 08:41:33 -080023import android.os.UserHandle;
Todd Kennedy7e3dd3a2019-07-08 10:34:29 -070024import android.permission.IOnPermissionsChangeListener;
Todd Kennedy1d29b4a2019-07-02 14:49:28 -070025
Todd Kennedy8f135982019-07-02 07:35:15 -070026/**
27 * Interface to communicate directly with the permission manager service.
28 * @see PermissionManager
29 * @hide
30 */
31interface IPermissionManager {
32 String[] getAppOpPermissionPackages(String permName);
Todd Kennedy1d29b4a2019-07-02 14:49:28 -070033
34 ParceledListSlice getAllPermissionGroups(int flags);
35
36 PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags);
37
38 PermissionInfo getPermissionInfo(String permName, String packageName, int flags);
39
40 ParceledListSlice queryPermissionsByGroup(String groupName, int flags);
Todd Kennedy6ffc5a62019-07-03 09:35:31 -070041
42 boolean addPermission(in PermissionInfo info, boolean async);
43
44 void removePermission(String name);
Todd Kennedy230c0a72019-07-03 13:06:35 -070045
46 int getPermissionFlags(String permName, String packageName, int userId);
47
48 void updatePermissionFlags(String permName, String packageName, int flagMask,
49 int flagValues, boolean checkAdjustPolicyFlagPermission, int userId);
50
51 void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId);
Todd Kennedyca1ea172019-07-03 15:02:28 -070052
53 int checkPermission(String permName, String pkgName, int userId);
54
55 int checkUidPermission(String permName, int uid);
Todd Kennedy7e3dd3a2019-07-08 10:34:29 -070056
Michael Groover56a84b22020-03-04 20:41:36 -080057 int checkDeviceIdentifierAccess(String packageName, String callingFeatureId, String message, int pid, int uid);
58
Todd Kennedy7e3dd3a2019-07-08 10:34:29 -070059 void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
60
61 void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
62
63 List<String> getWhitelistedRestrictedPermissions(String packageName,
64 int flags, int userId);
65
66 boolean addWhitelistedRestrictedPermission(String packageName, String permName,
67 int flags, int userId);
68
69 boolean removeWhitelistedRestrictedPermission(String packageName, String permName,
70 int flags, int userId);
Todd Kennedyc971a452019-07-08 16:04:52 -070071
72 void grantRuntimePermission(String packageName, String permName, int userId);
73
74 void revokeRuntimePermission(String packageName, String permName, int userId);
75
76 void resetRuntimePermissions();
Todd Kennedy583378d2019-07-12 06:50:30 -070077
78 boolean setDefaultBrowser(String packageName, int userId);
79
80 String getDefaultBrowser(int userId);
81
82 void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId);
83
84 void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId);
85
86 void grantDefaultPermissionsToEnabledTelephonyDataServices(
87 in String[] packageNames, int userId);
88
89 void revokeDefaultPermissionsFromDisabledTelephonyDataServices(
90 in String[] packageNames, int userId);
91
92 void grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId);
93
94 void revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId);
Todd Kennedyc5b0e862019-07-16 09:47:58 -070095
96 void setPermissionEnforced(String permName, boolean enforced);
97
98 boolean isPermissionEnforced(String permName);
99
100 boolean shouldShowRequestPermissionRationale(String permName,
101 String packageName, int userId);
102
103 boolean isPermissionRevokedByPolicy(String permName, String packageName, int userId);
Anthony Hughde787d42019-08-22 15:35:48 -0700104
105 List<SplitPermissionInfoParcelable> getSplitPermissions();
Evan Seversonb252d8b2019-11-20 08:41:33 -0800106
107 void startOneTimePermissionSession(String packageName, int userId, long timeout,
108 int importanceToResetTimer, int importanceToKeepSessionAlive);
109
110 void stopOneTimePermissionSession(String packageName, int userId);
Eugene Susladb77bc12020-03-03 12:09:00 -0800111
112 List<String> getAutoRevokeExemptionRequestedPackages(int userId);
113
114 List<String> getAutoRevokeExemptionGrantedPackages(int userId);
Eugene Susla922cd082020-03-11 12:38:17 -0700115
116 boolean setAutoRevokeWhitelisted(String packageName, boolean whitelisted, int userId);
117
118 boolean isAutoRevokeWhitelisted(String packageName, int userId);
Todd Kennedy8f135982019-07-02 07:35:15 -0700119}