標籤:recent-app android framework 應用表徵圖
問題描述
開啟圖庫,點擊“發送 ”按鈕,選擇上傳到蘇寧雲,分享後點擊“最近應用 ”按鈕,發現雲端硬碟表徵圖異常。
問題分析
模組SystemUI
源碼位置:frameworks/base/packages/SystemUI/src/com/android/systemui/recent/
icon載入過程(RecentTaskLoader.java)
從Task資訊中擷取表徵圖
final ResolveInfo resolveInfo = pm.resolveActivity(recentInfo.baseIntent, 0); private Drawable getFullResIcon(ResolveInfo info, PackageManager packageManager) { Resources resources; try { resources = packageManager.getResourcesForApplication( info.activityInfo.applicationInfo); } catch (PackageManager.NameNotFoundException e) { resources = null; } if (resources != null) { int iconId = info.activityInfo.getIconResource(); if (iconId != 0) { return getFullResIcon(resources, iconId); } } return getFullResDefaultActivityIcon(); }
public final int getIconResource() { return icon != 0 ? icon : applicationInfo.icon; }
若activity設定了icon返回activity的icon,否則返回application icon。
Drawable getFullResDefaultActivityIcon() { return getFullResIcon(Resources.getSystem(), com.android.internal.R.mipmap.sym_def_app_icon); }
android.R.mipmap
常量
int sym_def_app_icon
Default icon for applications that don’t specify an icon.
(小機器人來啦!)
RecentApps表徵圖異常分析