diff options
| author | 2017-09-19 22:37:44 +0000 | |
|---|---|---|
| committer | 2017-09-19 22:37:44 +0000 | |
| commit | f651e0c0168bb6b3a1740348870b1fe2193ed40a (patch) | |
| tree | 21456f1f034efda9b46fd1cb6d73b655df474f37 /packages/SettingsLib/src | |
| parent | e54975ad94b520db6bf3adf0597c3b5f735c3510 (diff) | |
| parent | f4f1c4d4256ae280d98b5a1e9235c06d432e845c (diff) | |
Merge "Deferred setup banner updates intermittently" into oc-mr1-dev am: 19e00be16b
am: f4f1c4d425
Change-Id: I0045019061b59d08e576a0c343f694804668870a
Diffstat (limited to 'packages/SettingsLib/src')
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java | 70 | ||||
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java | 2 |
2 files changed, 35 insertions, 37 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java index 9b75c00aeb3a..35ba6ae975d8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java @@ -26,7 +26,6 @@ import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.drawable.Icon; import android.net.Uri; -import android.os.AsyncTask; import android.os.Bundle; import android.os.RemoteException; import android.os.UserHandle; @@ -320,6 +319,15 @@ public class TileUtils { Context context, UserHandle user, Intent intent, Map<Pair<String, String>, Tile> addedCache, String defaultCategory, List<Tile> outTiles, boolean usePriority, boolean checkCategory, boolean forceTintExternalIcon) { + getTilesForIntent(context, user, intent, addedCache, defaultCategory, outTiles, + usePriority, checkCategory, forceTintExternalIcon, false /* shouldUpdateTiles */); + } + + public static void getTilesForIntent( + Context context, UserHandle user, Intent intent, + Map<Pair<String, String>, Tile> addedCache, String defaultCategory, List<Tile> outTiles, + boolean usePriority, boolean checkCategory, boolean forceTintExternalIcon, + boolean shouldUpdateTiles) { PackageManager pm = context.getPackageManager(); List<ResolveInfo> results = pm.queryIntentActivitiesAsUser(intent, PackageManager.GET_META_DATA, user.getIdentifier()); @@ -357,9 +365,11 @@ public class TileUtils { updateTileData(context, tile, activityInfo, activityInfo.applicationInfo, pm, providerMap, forceTintExternalIcon); if (DEBUG) Log.d(LOG_TAG, "Adding tile " + tile.title); - addedCache.put(key, tile); + } else if (shouldUpdateTiles) { + updateSummaryAndTitle(context, providerMap, tile); } + if (!tile.userHandle.contains(user)) { tile.userHandle.add(user); } @@ -380,7 +390,6 @@ public class TileUtils { String summary = null; String keyHint = null; boolean isIconTintable = false; - RemoteViews remoteViews = null; // Get the activity's meta-data try { @@ -428,7 +437,8 @@ public class TileUtils { } if (metaData.containsKey(META_DATA_PREFERENCE_CUSTOM_VIEW)) { int layoutId = metaData.getInt(META_DATA_PREFERENCE_CUSTOM_VIEW); - remoteViews = new RemoteViews(applicationInfo.packageName, layoutId); + tile.remoteViews = new RemoteViews(applicationInfo.packageName, layoutId); + updateSummaryAndTitle(context, providerMap, tile); } } } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) { @@ -462,7 +472,6 @@ public class TileUtils { // Suggest a key for this tile tile.key = keyHint; tile.isIconTintable = isIconTintable; - tile.remoteViews = remoteViews; return true; } @@ -470,6 +479,26 @@ public class TileUtils { return false; } + private static void updateSummaryAndTitle( + Context context, Map<String, IContentProvider> providerMap, Tile tile) { + if (tile == null || tile.metaData == null + || !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { + return; + } + + String uriString = tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI); + Bundle bundle = getBundleFromUri(context, uriString, providerMap); + String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY); + String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE); + if (overrideSummary != null) { + tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary); + } + + if (overrideTitle != null) { + tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle); + } + } + /** * Gets the icon package name and resource id from content provider. * @param context context @@ -535,37 +564,6 @@ public class TileUtils { } } - public static void updateTileUsingSummaryUri(Context context, final Tile tile) { - if (tile == null || tile.metaData == null || - !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { - return; - } - - new AsyncTask<Void, Void, Bundle>() { - @Override - protected Bundle doInBackground(Void... params) { - return getBundleFromUri(context, - tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI), new HashMap<>()); - } - - @Override - protected void onPostExecute(Bundle bundle) { - if (bundle == null) { - return; - } - final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY); - final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE); - - if (overrideSummary != null) { - tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary); - } - if (overrideTitle != null) { - tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle); - } - } - }.execute(); - } - private static String getString(Bundle bundle, String key) { return bundle == null ? null : bundle.getString(key); } diff --git a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java index 00f32b2839af..56b84415e907 100644 --- a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java +++ b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java @@ -195,7 +195,7 @@ public class SuggestionParser { intent.setPackage(category.pkg); } TileUtils.getTilesForIntent(mContext, new UserHandle(UserHandle.myUserId()), intent, - mAddCache, null, suggestions, true, false, false); + mAddCache, null, suggestions, true, false, false, true /* shouldUpdateTiles */); filterSuggestions(suggestions, countBefore, isSmartSuggestionEnabled); if (!category.multiple && suggestions.size() > (countBefore + 1)) { // If there are too many, remove them all and only re-add the one with the highest |