Tweak the ui based on the Android S design

- Use TopIntro preference to show introduction text

Change-Id: Ic2304dab188848dfa6ef8a0429fd5b7ad40cf0af
Test: See the screenshot- https://screenshot.googleplex.com/AMS64EGe5Fcdfn8
Fix: 177997785
This commit is contained in:
Tsung-Mao Fang
2021-02-01 16:29:01 +08:00
parent 16fa77369f
commit 23e77a557a
2 changed files with 18 additions and 16 deletions

View File

@@ -25,14 +25,18 @@
android:layout="@layout/settings_entity_header" android:layout="@layout/settings_entity_header"
android:selectable="false" android:selectable="false"
android:order="-10000" android:order="-10000"
settings:allowDividerBelow="true"
settings:controller="com.android.settings.security.CredentialManagementAppHeaderController"/> settings:controller="com.android.settings.security.CredentialManagementAppHeaderController"/>
<com.android.settingslib.widget.TopIntroPreference
android:key="top_intro_request_manage_credentials"
android:order="-9999"
android:title="@string/request_manage_credentials_description"/>
<!-- Buttons --> <!-- Buttons -->
<com.android.settingslib.widget.ActionButtonsPreference <com.android.settingslib.widget.ActionButtonsPreference
android:key="buttons" android:key="buttons"
android:selectable="true" android:selectable="true"
android:order="-9999" android:order="-9998"
settings:allowDividerAbove="true" settings:allowDividerAbove="true"
settings:allowDividerBelow="true" settings:allowDividerBelow="true"
settings:controller="com.android.settings.security.CredentialManagementAppButtonsController"/> settings:controller="com.android.settings.security.CredentialManagementAppButtonsController"/>
@@ -42,6 +46,7 @@
android:key="authentication_policy" android:key="authentication_policy"
android:layout="@layout/preference_category_no_label" android:layout="@layout/preference_category_no_label"
android:title="@string/summary_placeholder" android:title="@string/summary_placeholder"
settings:allowDividerAbove="true"
settings:controller="com.android.settings.security.CredentialManagementAppPolicyController"/> settings:controller="com.android.settings.security.CredentialManagementAppPolicyController"/>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -25,6 +25,7 @@ import android.os.RemoteException;
import android.security.IKeyChainService; import android.security.IKeyChainService;
import android.security.KeyChain; import android.security.KeyChain;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
@@ -54,7 +55,6 @@ public class CredentialManagementAppHeaderController extends BasePreferenceContr
} }
private final PackageManager mPackageManager; private final PackageManager mPackageManager;
private boolean mHasCredentialManagerPackage;
private String mCredentialManagerPackageName; private String mCredentialManagerPackageName;
@Override @Override
@@ -69,7 +69,6 @@ public class CredentialManagementAppHeaderController extends BasePreferenceContr
mExecutor.execute(() -> { mExecutor.execute(() -> {
try { try {
IKeyChainService service = KeyChain.bind(mContext).getService(); IKeyChainService service = KeyChain.bind(mContext).getService();
mHasCredentialManagerPackage = service.hasCredentialManagementApp();
mCredentialManagerPackageName = service.getCredentialManagementAppPackageName(); mCredentialManagerPackageName = service.getCredentialManagementAppPackageName();
} catch (InterruptedException | RemoteException e) { } catch (InterruptedException | RemoteException e) {
Log.e(TAG, "Unable to display credential management app header"); Log.e(TAG, "Unable to display credential management app header");
@@ -80,23 +79,21 @@ public class CredentialManagementAppHeaderController extends BasePreferenceContr
private void displayHeader(PreferenceScreen screen) { private void displayHeader(PreferenceScreen screen) {
LayoutPreference headerPref = screen.findPreference(getPreferenceKey()); LayoutPreference headerPref = screen.findPreference(getPreferenceKey());
ImageView mAppIconView = headerPref.findViewById(R.id.entity_header_icon); ImageView appIconView = headerPref.findViewById(R.id.entity_header_icon);
TextView mTitleView = headerPref.findViewById(R.id.entity_header_title); TextView titleView = headerPref.findViewById(R.id.entity_header_title);
TextView mDescriptionView = headerPref.findViewById(R.id.entity_header_summary); TextView summary1 = headerPref.findViewById(R.id.entity_header_summary);
TextView summary2 = headerPref.findViewById(R.id.entity_header_second_summary);
summary1.setVisibility(View.GONE);
summary2.setVisibility(View.GONE);
try { try {
ApplicationInfo applicationInfo = ApplicationInfo applicationInfo =
mPackageManager.getApplicationInfo(mCredentialManagerPackageName, 0); mPackageManager.getApplicationInfo(mCredentialManagerPackageName, 0);
mAppIconView.setImageDrawable(mPackageManager.getApplicationIcon(applicationInfo)); appIconView.setImageDrawable(mPackageManager.getApplicationIcon(applicationInfo));
mTitleView.setText(applicationInfo.loadLabel(mPackageManager)); titleView.setText(applicationInfo.loadLabel(mPackageManager));
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
mAppIconView.setImageDrawable(null); appIconView.setImageDrawable(null);
mTitleView.setText(mCredentialManagerPackageName); titleView.setText(mCredentialManagerPackageName);
} }
// TODO (b/165641221): The description should be multi-lined, which is currently a
// limitation of using Settings entity header. However, the Settings entity header
// should be used to be consistent with the rest of Settings.
mDescriptionView.setText(
mContext.getString(R.string.request_manage_credentials_description));
} }
} }