Android--获取高清的app图标

手机开发 2016-09-29

只有一个方法。

public synchronized static Drawable getIconFromPackageName(String packageName, Context context) {
         PackageManager pm = context.getPackageManager();
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
             try {
                 PackageInfo pi = pm.getPackageInfo(packageName, 0);
                 Context otherAppCtx = context.createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY);
                 int displayMetrics[] = {DisplayMetrics.DENSITY_XXXHIGH,DisplayMetrics.DENSITY_XXHIGH,DisplayMetrics.DENSITY_XHIGH, DisplayMetrics.DENSITY_HIGH, DisplayMetrics.DENSITY_TV};
                 for (int displayMetric : displayMetrics) {
                     try {
                         Drawable d = otherAppCtx.getResources().getDrawableForDensity(pi.applicationInfo.icon, displayMetric);
                         if (d != null) {
                             return d;
                         }
                     } catch (Resources.NotFoundException e) {
                         continue;
                     }
                 }
             } catch (Exception e) {
                 // Handle Error here
             }
         }
         ApplicationInfo appInfo = null;
         try {
             appInfo = pm.getApplicationInfo(packageName, 0);
         } catch (PackageManager.NameNotFoundException e) {
             return null;
         }
         return appInfo.loadIcon(pm);
     }

相关推荐