From 72c2fa5a3d7f6913a387d78b195ad941303f46c6 Mon Sep 17 00:00:00 2001 From: Yanting Yang Date: Wed, 17 Jun 2020 23:49:09 +0800 Subject: [PATCH] Avoid NPE when screen title is null MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The screen title of Settings pages could be empty, e.g., Mobile network detail page. It will cause NPE when Settings generates the slice object, and then results in the Settings Search showing empty view for slice search result. It’s a bad user experience, we need to add the null check to avoid it. Bug: 157986273 Test: robotests Change-Id: I8bf6a081c6b3e97ccb173424ff4a310ae863ae2f --- src/com/android/settings/slices/SliceBuilderUtils.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java index 391e9fdf741..552927e1da2 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -220,9 +220,11 @@ public class SliceBuilderUtils { public static Intent getContentIntent(Context context, SliceData sliceData) { final Uri contentUri = new Uri.Builder().appendPath(sliceData.getKey()).build(); + final String screenTitle = TextUtils.isEmpty(sliceData.getScreenTitle()) ? null + : sliceData.getScreenTitle().toString(); final Intent intent = buildSearchResultPageIntent(context, sliceData.getFragmentClassName(), sliceData.getKey(), - sliceData.getScreenTitle().toString(), 0 /* TODO */); + screenTitle, 0 /* TODO */); intent.setClassName(context.getPackageName(), SubSettings.class.getName()); intent.setData(contentUri); return intent; @@ -399,7 +401,8 @@ public class SliceBuilderUtils { keywords.add(data.getTitle()); - if (!TextUtils.equals(data.getTitle(), data.getScreenTitle())) { + if (!TextUtils.isEmpty(data.getScreenTitle()) + && !TextUtils.equals(data.getTitle(), data.getScreenTitle())) { keywords.add(data.getScreenTitle().toString()); }