OSDN Git Service

Badge Wi-Fi installer apps
authorRobin Lee <rgl@google.com>
Thu, 26 Feb 2015 12:30:09 +0000 (12:30 +0000)
committerRobin Lee <rgl@google.com>
Fri, 27 Feb 2015 15:57:53 +0000 (15:57 +0000)
Consistent, and more importantly useful to know which version of an app
was responsible for installing a network.

Change-Id: I37e326f419e03b020e17daa7d65c713d1ea6ddc8

src/com/android/settings/wifi/AccessPointPreference.java

index 3975434..f68410a 100644 (file)
  */
 package com.android.settings.wifi;
 
+import android.app.AppGlobals;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.StateListDrawable;
 import android.net.wifi.WifiConfiguration;
+import android.os.RemoteException;
+import android.os.UserHandle;
 import android.preference.Preference;
 import android.view.View;
 import android.widget.TextView;
@@ -71,13 +75,22 @@ public class AccessPointPreference extends Preference {
         Drawable drawable = pm.getDefaultActivityIcon();
         if (mConfig == null) {
             drawable.setAlpha(0);
-        } else if (mConfig.creatorName.equals(systemName)) {
-            drawable = getContext().getApplicationInfo().loadIcon(pm);
         } else {
-            try {
-                drawable = pm.getApplicationIcon(mConfig.creatorName);
-            } catch (NameNotFoundException nnfe) {
-                // use default app icon
+            int userId = UserHandle.getUserId(mConfig.creatorUid);
+            ApplicationInfo appInfo = null;
+            if (mConfig.creatorName.equals(systemName)) {
+                appInfo = getContext().getApplicationInfo();
+            } else {
+                try {
+                    IPackageManager ipm = AppGlobals.getPackageManager();
+                    appInfo = ipm.getApplicationInfo(mConfig.creatorName, 0 /* flags */, userId);
+                } catch (RemoteException rex) {
+                    // use default app icon
+                }
+            }
+            if (appInfo != null) {
+                drawable = appInfo.loadIcon(pm);
+                drawable = pm.getUserBadgedIcon(drawable, new UserHandle(userId));
             }
         }