/* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.permission; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.TestApi; /** * Represents the usage of a permission group by an app. Supports package name, user, permission * group, whether or not the access is running or recent, whether the access is tied to a phone * call, and an optional special attribution. * * @hide */ @TestApi public final class PermGroupUsage { private final String mPackageName; private final int mUid; private final long mLastAccess; private final String mPermGroupName; private final boolean mIsActive; private final boolean mIsPhoneCall; private final CharSequence mAttribution; /** * * @param packageName The package name of the using app * @param uid The uid of the using app * @param permGroupName The name of the permission group being used * @param lastAccess The time of last access * @param isActive Whether this is active * @param isPhoneCall Whether this is a usage by the phone * @param attribution An optional string attribution to show * @hide */ @TestApi public PermGroupUsage(@NonNull String packageName, int uid, @NonNull String permGroupName, long lastAccess, boolean isActive, boolean isPhoneCall, @Nullable CharSequence attribution) { this.mPackageName = packageName; this.mUid = uid; this.mPermGroupName = permGroupName; this.mLastAccess = lastAccess; this.mIsActive = isActive; this.mIsPhoneCall = isPhoneCall; this.mAttribution = attribution; } /** * @hide */ @TestApi public @NonNull String getPackageName() { return mPackageName; } /** * @hide */ @TestApi public int getUid() { return mUid; } /** * @hide */ @TestApi public @NonNull String getPermGroupName() { return mPermGroupName; } /** * @hide */ @TestApi public long getLastAccess() { return mLastAccess; } /** * @hide */ @TestApi public boolean isActive() { return mIsActive; } /** * @hide */ @TestApi public boolean isPhoneCall() { return mIsPhoneCall; } /** * @hide */ @TestApi public @Nullable CharSequence getAttribution() { return mAttribution; } @Override public String toString() { return getClass().getSimpleName() + "@" + Integer.toHexString(System.identityHashCode(this)) + " packageName: " + mPackageName + ", UID: " + mUid + ", permGroup: " + mPermGroupName + ", lastAccess: " + mLastAccess + ", isActive: " + mIsActive + ", attribution: " + mAttribution; } }