diff options
| -rw-r--r-- | packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java | 27 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java | 14 |
2 files changed, 24 insertions, 17 deletions
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java index 0ffd471e64af..05c2f24001e8 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java @@ -174,7 +174,7 @@ public class Tile implements Parcelable { packageManager.getResourcesForApplication(mActivityPackage); title = res.getString(mMetaData.getInt(META_DATA_PREFERENCE_TITLE)); } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) { - Log.d(TAG, "Couldn't find info", e); + Log.w(TAG, "Couldn't find info", e); } } else { title = mMetaData.getString(META_DATA_PREFERENCE_TITLE); @@ -183,26 +183,16 @@ public class Tile implements Parcelable { // Set the preference title to the activity's label if no // meta-data is found if (title == null) { - title = getActivityInfo(context).loadLabel(packageManager); + final ActivityInfo activityInfo = getActivityInfo(context); + if (activityInfo == null) { + return null; + } + title = activityInfo.loadLabel(packageManager); } return title; } /** - * Returns the raw metadata for summary, this is used for comparing 2 summary text without - * loading the real string. - */ - public String getSummaryReference() { - if (mSummaryOverride != null) { - return mSummaryOverride.toString(); - } - if (mMetaData != null && mMetaData.containsKey(META_DATA_PREFERENCE_SUMMARY)) { - return mMetaData.get(META_DATA_PREFERENCE_SUMMARY).toString(); - } - return null; - } - - /** * Overrides the summary. This can happen when injected tile wants to provide dynamic summary. */ public void overrideSummary(CharSequence summaryOverride) { @@ -302,7 +292,7 @@ public class Tile implements Parcelable { if (iconResId != 0) { final Icon icon = Icon.createWithResource(activityInfo.packageName, iconResId); if (isIconTintable(context)) { - final TypedArray a = context.obtainStyledAttributes(new int[] { + final TypedArray a = context.obtainStyledAttributes(new int[]{ android.R.attr.colorControlNormal}); final int tintColor = a.getColor(0, 0); a.recycle(); @@ -357,6 +347,9 @@ public class Tile implements Parcelable { if (infoList != null && !infoList.isEmpty()) { mActivityInfo = infoList.get(0).activityInfo; mMetaData = mActivityInfo.metaData; + } else { + Log.e(TAG, "Cannot find package info for " + + intent.getComponent().flattenToString()); } } return mActivityInfo; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java index d0d1e58effaa..5da6205d45bd 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java @@ -23,6 +23,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowPackageManager; +import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class TileTest { @@ -164,4 +165,17 @@ public class TileTest { assertThat(tile.mLastUpdateTime).isNotEqualTo(staleTimeStamp); } + + @Test + public void getTitle_noActivity_returnNull() { + final ResolveInfo info = new ResolveInfo(); + info.activityInfo = mActivityInfo; + final ShadowPackageManager spm = Shadow.extract(mContext.getPackageManager()); + spm.removePackage(mActivityInfo.packageName); + + final Tile tile = new Tile(mActivityInfo, "category"); + ReflectionHelpers.setField(tile, "mActivityInfo", null); + + assertThat(tile.getTitle(RuntimeEnvironment.application)).isNull(); + } } |