summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java27
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java14
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();
+ }
}