For mainline module apps, user can not install them from the play store. We should not provide the play store link for them in app info page. Therefore, we decide to hide their app details preference which is to provide the play store link from the app info page. Bug: 152718521 Test: visual and robotests Change-Id: I46b64be0d725740c2b80a5251a42e9fc834e4596
74 lines
2.5 KiB
Java
74 lines
2.5 KiB
Java
/*
|
|
* Copyright (C) 2017 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 com.android.settings.applications.appinfo;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.UserManager;
|
|
|
|
import androidx.preference.Preference;
|
|
|
|
import com.android.settings.R;
|
|
import com.android.settings.Utils;
|
|
import com.android.settings.applications.AppStoreUtil;
|
|
import com.android.settingslib.applications.AppUtils;
|
|
|
|
public class AppInstallerInfoPreferenceController extends AppInfoPreferenceControllerBase {
|
|
|
|
private String mPackageName;
|
|
private String mInstallerPackage;
|
|
private CharSequence mInstallerLabel;
|
|
|
|
public AppInstallerInfoPreferenceController(Context context, String key) {
|
|
super(context, key);
|
|
}
|
|
|
|
@Override
|
|
public int getAvailabilityStatus() {
|
|
if (UserManager.get(mContext).isManagedProfile()) {
|
|
return DISABLED_FOR_USER;
|
|
}
|
|
|
|
if (AppUtils.isMainlineModule(mContext, mPackageName)) {
|
|
return DISABLED_FOR_USER;
|
|
}
|
|
|
|
return mInstallerLabel != null ? AVAILABLE : DISABLED_FOR_USER;
|
|
}
|
|
|
|
@Override
|
|
public void updateState(Preference preference) {
|
|
final int detailsStringId = AppUtils.isInstant(mParent.getPackageInfo().applicationInfo)
|
|
? R.string.instant_app_details_summary
|
|
: R.string.app_install_details_summary;
|
|
preference.setSummary(mContext.getString(detailsStringId, mInstallerLabel));
|
|
|
|
Intent intent = AppStoreUtil.getAppStoreLink(mContext, mInstallerPackage, mPackageName);
|
|
if (intent != null) {
|
|
preference.setIntent(intent);
|
|
} else {
|
|
preference.setEnabled(false);
|
|
}
|
|
}
|
|
|
|
public void setPackageName(String packageName) {
|
|
mPackageName = packageName;
|
|
mInstallerPackage = AppStoreUtil.getInstallerPackageName(mContext, mPackageName);
|
|
mInstallerLabel = Utils.getApplicationLabel(mContext, mInstallerPackage);
|
|
}
|
|
}
|