Files
app_Settings/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceController.java
Yanting Yang 172f4064a9 Hide the app details preference for mainline module apps
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
2020-05-06 20:56:51 +08:00

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);
}
}