1/* 2 * Copyright (C) 2015 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.content.pm; 18 19import android.annotation.NonNull; 20import android.annotation.Nullable; 21import android.graphics.drawable.Drawable; 22import android.os.Parcel; 23import android.os.Parcelable; 24 25/** 26 * This class represents the state of an ephemeral app. 27 * 28 * @hide 29 */ 30public final class EphemeralApplicationInfo implements Parcelable { 31 private final ApplicationInfo mApplicationInfo; 32 33 private final String mPackageName; 34 private final CharSequence mLabelText; 35 36 private final String[] mRequestedPermissions; 37 private final String[] mGrantedPermissions; 38 39 public EphemeralApplicationInfo(ApplicationInfo appInfo, 40 String[] requestedPermissions, String[] grantedPermissions) { 41 mApplicationInfo = appInfo; 42 mPackageName = null; 43 mLabelText = null; 44 mRequestedPermissions = requestedPermissions; 45 mGrantedPermissions = grantedPermissions; 46 } 47 48 public EphemeralApplicationInfo(String packageName, CharSequence label, 49 String[] requestedPermissions, String[] grantedPermissions) { 50 mApplicationInfo = null; 51 mPackageName = packageName; 52 mLabelText = label; 53 mRequestedPermissions = requestedPermissions; 54 mGrantedPermissions = grantedPermissions; 55 } 56 57 private EphemeralApplicationInfo(Parcel parcel) { 58 mPackageName = parcel.readString(); 59 mLabelText = parcel.readCharSequence(); 60 mRequestedPermissions = parcel.readStringArray(); 61 mGrantedPermissions = parcel.createStringArray(); 62 mApplicationInfo = parcel.readParcelable(null); 63 } 64 65 public @NonNull String getPackageName() { 66 if (mApplicationInfo != null) { 67 return mApplicationInfo.packageName; 68 } 69 return mPackageName; 70 } 71 72 public @NonNull CharSequence loadLabel(@NonNull PackageManager packageManager) { 73 if (mApplicationInfo != null) { 74 return mApplicationInfo.loadLabel(packageManager); 75 } 76 return mLabelText; 77 } 78 79 public @NonNull Drawable loadIcon(@NonNull PackageManager packageManager) { 80 if (mApplicationInfo != null) { 81 return mApplicationInfo.loadIcon(packageManager); 82 } 83 return packageManager.getEphemeralApplicationIcon(mPackageName); 84 } 85 86 public @Nullable String[] getRequestedPermissions() { 87 return mRequestedPermissions; 88 } 89 90 public @Nullable String[] getGrantedPermissions() { 91 return mGrantedPermissions; 92 } 93 94 @Override 95 public int describeContents() { 96 return 0; 97 } 98 99 @Override 100 public void writeToParcel(Parcel parcel, int flags) { 101 parcel.writeString(mPackageName); 102 parcel.writeCharSequence(mLabelText); 103 parcel.writeStringArray(mRequestedPermissions); 104 parcel.writeStringArray(mGrantedPermissions); 105 parcel.writeParcelable(mApplicationInfo, flags); 106 } 107 108 public static final Creator<EphemeralApplicationInfo> CREATOR = 109 new Creator<EphemeralApplicationInfo>() { 110 @Override 111 public EphemeralApplicationInfo createFromParcel(Parcel parcel) { 112 return new EphemeralApplicationInfo(parcel); 113 } 114 115 @Override 116 public EphemeralApplicationInfo[] newArray(int size) { 117 return new EphemeralApplicationInfo[0]; 118 } 119 }; 120} 121