2 * Copyright (C) 2015 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package android
.content
.pm
;
19 import android
.annotation
.NonNull
;
20 import android
.annotation
.Nullable
;
21 import android
.graphics
.drawable
.Drawable
;
22 import android
.os
.Parcel
;
23 import android
.os
.Parcelable
;
26 * This class represents the state of an ephemeral app.
30 public final class EphemeralApplicationInfo
implements Parcelable
{
31 private final ApplicationInfo mApplicationInfo
;
33 private final String mPackageName
;
34 private final CharSequence mLabelText
;
36 private final String
[] mRequestedPermissions
;
37 private final String
[] mGrantedPermissions
;
39 public EphemeralApplicationInfo(ApplicationInfo appInfo
,
40 String
[] requestedPermissions
, String
[] grantedPermissions
) {
41 mApplicationInfo
= appInfo
;
44 mRequestedPermissions
= requestedPermissions
;
45 mGrantedPermissions
= grantedPermissions
;
48 public EphemeralApplicationInfo(String packageName
, CharSequence label
,
49 String
[] requestedPermissions
, String
[] grantedPermissions
) {
50 mApplicationInfo
= null;
51 mPackageName
= packageName
;
53 mRequestedPermissions
= requestedPermissions
;
54 mGrantedPermissions
= grantedPermissions
;
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);
65 public @NonNull String
getPackageName() {
66 if (mApplicationInfo
!= null) {
67 return mApplicationInfo
.packageName
;
72 public @NonNull CharSequence
loadLabel(@NonNull PackageManager packageManager
) {
73 if (mApplicationInfo
!= null) {
74 return mApplicationInfo
.loadLabel(packageManager
);
79 public @NonNull Drawable
loadIcon(@NonNull PackageManager packageManager
) {
80 if (mApplicationInfo
!= null) {
81 return mApplicationInfo
.loadIcon(packageManager
);
83 return packageManager
.getEphemeralApplicationIcon(mPackageName
);
86 public @Nullable String
[] getRequestedPermissions() {
87 return mRequestedPermissions
;
90 public @Nullable String
[] getGrantedPermissions() {
91 return mGrantedPermissions
;
95 public int describeContents() {
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
);
108 public static final Creator
<EphemeralApplicationInfo
> CREATOR
=
109 new Creator
<EphemeralApplicationInfo
>() {
111 public EphemeralApplicationInfo
createFromParcel(Parcel parcel
) {
112 return new EphemeralApplicationInfo(parcel
);
116 public EphemeralApplicationInfo
[] newArray(int size
) {
117 return new EphemeralApplicationInfo
[0];