summaryrefslogtreecommitdiff
path: root/android-tools/permission.txt
blob: 60dc651989508eae8b92508f568f4ab29681142d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
files under frameworks/native/data/etc/ defined various feature

adb shell dumpsys package android.content.cts
adb shell cat /data/system/packages.xml
aapt d permissions out/host/linux-x86/cts/android-cts/testcases/CtsContentTestCases.apk

./frameworks/base/core/java/android/content/pm/PackageParser.java

frameworks/base/core/java/android/content/pm/PackageManager.java:3245: public abstract @PermissionResult int checkPermission(String permName, String pkgName);
------> frameworks/base/core/java/android/app/ApplicationPackageManager.java nublic int checkPermission(String permName, String pkgName) {
            try {
                return mPM.checkPermission(permName, pkgName, mContext.getUserId());
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }

frameworks/base/core/java/android/app/ContextImpl.java
frameworks/base/core/java/android/app/ActivityThread.java


18:57:19 liu: oreo$ grep -rn 'int checkPermission(' frameworks/base/core/
frameworks/base/core/java/android/app/IActivityManager.aidl:169:    int checkPermission(in String permission, int pid, int uid);
frameworks/base/core/java/android/app/ApplicationPackageManager.java:557:    public int checkPermission(String permName, String pkgName) {
frameworks/base/core/java/android/app/ContextImpl.java:1660:    public int checkPermission(String permission, int pid, int uid) {
frameworks/base/core/java/android/app/ContextImpl.java:1686:    public int checkPermission(String permission, int pid, int uid, IBinder callerToken) {
frameworks/base/core/java/android/content/pm/IPackageManager.aidl:95:    int checkPermission(String permName, String pkgName, int userId);
frameworks/base/core/java/android/content/pm/PackageManager.java:3245:    public abstract @PermissionResult int checkPermission(String permName, String pkgName);
frameworks/base/core/java/android/content/Context.java:3998:    public abstract int checkPermission(@NonNull String permission, int pid, int uid);
frameworks/base/core/java/android/content/Context.java:4002:    public abstract int checkPermission(@NonNull String permission, int pid, int uid,
frameworks/base/core/java/android/content/ContextWrapper.java:717:    public int checkPermission(String permission, int pid, int uid) {
frameworks/base/core/java/android/content/ContextWrapper.java:723:    public int checkPermission(String permission, int pid, int uid, IBinder callerToken) {
18:57:33 liu: oreo$


frameworks/base/core/java/android/app/ContextImpl.java
    @Override
    public int checkPermission(String permission, int pid, int uid) {
        if (permission == null) {
            throw new IllegalArgumentException("permission is null");
        }

        final IActivityManager am = ActivityManager.getService();
        if (am == null) {
            // Well this is super awkward; we somehow don't have an active
            // ActivityManager instance. If we're testing a root or system
            // UID, then they totally have whatever permission this is.
            final int appId = UserHandle.getAppId(uid);
            if (appId == Process.ROOT_UID || appId == Process.SYSTEM_UID) {
                Slog.w(TAG, "Missing ActivityManager; assuming " + uid + " holds " + permission);
                return PackageManager.PERMISSION_GRANTED;
            }
        }

        try {
            return am.checkPermission(permission, pid, uid);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }



frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java:4986:
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java:8212: