Merge "Use IconDrawableFactory to load icons for default apps."
This commit is contained in:
committed by
Android (Google) Code Review
commit
5317e70be1
@@ -18,6 +18,7 @@ package com.android.settings.applications.defaultapps;
|
||||
|
||||
import android.app.AppGlobals;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.ComponentInfo;
|
||||
import android.content.pm.PackageItemInfo;
|
||||
@@ -25,6 +26,7 @@ import android.content.pm.PackageManager;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.util.IconDrawableFactory;
|
||||
|
||||
import com.android.settings.widget.RadioButtonPickerFragment;
|
||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||
@@ -39,18 +41,20 @@ public class DefaultAppInfo extends RadioButtonPickerFragment.CandidateInfo {
|
||||
public final PackageItemInfo packageItemInfo;
|
||||
public final String summary;
|
||||
protected final PackageManagerWrapper mPm;
|
||||
private final Context mContext;
|
||||
|
||||
public DefaultAppInfo(PackageManagerWrapper pm, int uid, ComponentName cn) {
|
||||
this(pm, uid, cn, null /* summary */);
|
||||
public DefaultAppInfo(Context context, PackageManagerWrapper pm, int uid, ComponentName cn) {
|
||||
this(context, pm, uid, cn, null /* summary */, true /* enabled */);
|
||||
}
|
||||
|
||||
public DefaultAppInfo(PackageManagerWrapper pm, int uid, ComponentName cn, String summary) {
|
||||
this(pm, uid, cn, summary, true /* enabled */);
|
||||
public DefaultAppInfo(Context context, PackageManagerWrapper pm, PackageItemInfo info) {
|
||||
this(context, pm, info, null /* summary */, true /* enabled */);
|
||||
}
|
||||
|
||||
public DefaultAppInfo(PackageManagerWrapper pm, int uid, ComponentName cn, String summary,
|
||||
boolean enabled) {
|
||||
public DefaultAppInfo(Context context, PackageManagerWrapper pm, int uid, ComponentName cn,
|
||||
String summary, boolean enabled) {
|
||||
super(enabled);
|
||||
mContext = context;
|
||||
mPm = pm;
|
||||
packageItemInfo = null;
|
||||
userId = uid;
|
||||
@@ -58,9 +62,10 @@ public class DefaultAppInfo extends RadioButtonPickerFragment.CandidateInfo {
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
public DefaultAppInfo(PackageManagerWrapper pm, PackageItemInfo info, String summary,
|
||||
boolean enabled) {
|
||||
public DefaultAppInfo(Context context, PackageManagerWrapper pm, PackageItemInfo info,
|
||||
String summary, boolean enabled) {
|
||||
super(enabled);
|
||||
mContext = context;
|
||||
mPm = pm;
|
||||
userId = UserHandle.myUserId();
|
||||
packageItemInfo = info;
|
||||
@@ -68,10 +73,6 @@ public class DefaultAppInfo extends RadioButtonPickerFragment.CandidateInfo {
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
public DefaultAppInfo(PackageManagerWrapper pm, PackageItemInfo info) {
|
||||
this(pm, info, null /* summary */, true /* enabled */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence loadLabel() {
|
||||
if (componentName != null) {
|
||||
@@ -97,22 +98,29 @@ public class DefaultAppInfo extends RadioButtonPickerFragment.CandidateInfo {
|
||||
|
||||
@Override
|
||||
public Drawable loadIcon() {
|
||||
final IconDrawableFactory factory = IconDrawableFactory.newInstance(mContext);
|
||||
if (componentName != null) {
|
||||
try {
|
||||
final ComponentInfo componentInfo = getComponentInfo();
|
||||
final ApplicationInfo appInfo = mPm.getApplicationInfoAsUser(
|
||||
componentName.getPackageName(), 0, userId);
|
||||
if (componentInfo != null) {
|
||||
return componentInfo.loadIcon(mPm.getPackageManager());
|
||||
return factory.getBadgedIcon(componentInfo, appInfo, userId);
|
||||
} else {
|
||||
final ApplicationInfo appInfo = mPm.getApplicationInfoAsUser(
|
||||
componentName.getPackageName(), 0, userId);
|
||||
return appInfo.loadIcon(mPm.getPackageManager());
|
||||
return factory.getBadgedIcon(appInfo);
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (packageItemInfo != null) {
|
||||
return packageItemInfo.loadIcon(mPm.getPackageManager());
|
||||
try {
|
||||
final ApplicationInfo appInfo = mPm.getApplicationInfoAsUser(
|
||||
packageItemInfo.packageName, 0, userId);
|
||||
return factory.getBadgedIcon(packageItemInfo, appInfo, userId);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@@ -187,10 +187,11 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment {
|
||||
final List<DefaultAppInfo> candidates = new ArrayList<>();
|
||||
final List<ResolveInfo> resolveInfos = mPm.getPackageManager()
|
||||
.queryIntentServices(AUTOFILL_PROBE, PackageManager.GET_META_DATA);
|
||||
final Context context = getContext();
|
||||
for (ResolveInfo info : resolveInfos) {
|
||||
final String permission = info.serviceInfo.permission;
|
||||
if (Manifest.permission.BIND_AUTOFILL_SERVICE.equals(permission)) {
|
||||
candidates.add(new DefaultAppInfo(mPm, mUserId, new ComponentName(
|
||||
candidates.add(new DefaultAppInfo(context, mPm, mUserId, new ComponentName(
|
||||
info.serviceInfo.packageName, info.serviceInfo.name)));
|
||||
}
|
||||
}
|
||||
|
@@ -62,7 +62,7 @@ public class DefaultAutofillPreferenceController extends DefaultAppPreferenceCon
|
||||
final String flattenComponent = Settings.Secure.getString(mContext.getContentResolver(),
|
||||
DefaultAutofillPicker.SETTING);
|
||||
if (!TextUtils.isEmpty(flattenComponent)) {
|
||||
DefaultAppInfo appInfo = new DefaultAppInfo(mPackageManager,
|
||||
DefaultAppInfo appInfo = new DefaultAppInfo(mContext, mPackageManager,
|
||||
mUserId, ComponentName.unflattenFromString(flattenComponent));
|
||||
return appInfo;
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.applications.defaultapps;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
|
||||
@@ -47,7 +48,7 @@ public class DefaultBrowserPicker extends DefaultAppPickerFragment {
|
||||
@Override
|
||||
protected List<DefaultAppInfo> getCandidates() {
|
||||
final List<DefaultAppInfo> candidates = new ArrayList<>();
|
||||
|
||||
final Context context = getContext();
|
||||
// Resolve that intent and check that the handleAllWebDataURI boolean is set
|
||||
final List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(
|
||||
DefaultBrowserPreferenceController.BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId);
|
||||
@@ -59,7 +60,7 @@ public class DefaultBrowserPicker extends DefaultAppPickerFragment {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
candidates.add(new DefaultAppInfo(mPm,
|
||||
candidates.add(new DefaultAppInfo(context, mPm,
|
||||
mPm.getApplicationInfoAsUser(info.activityInfo.packageName, 0, mUserId)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// Skip unknown packages.
|
||||
|
@@ -67,7 +67,7 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
||||
try {
|
||||
final String packageName = mPackageManager.getDefaultBrowserPackageNameAsUser(mUserId);
|
||||
Log.d(TAG, "Get default browser package: " + packageName);
|
||||
return new DefaultAppInfo(mPackageManager,
|
||||
return new DefaultAppInfo(mContext, mPackageManager,
|
||||
mPackageManager.getPackageManager().getApplicationInfo(packageName, 0));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return null;
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.applications.defaultapps;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -44,12 +45,13 @@ public class DefaultEmergencyPicker extends DefaultAppPickerFragment {
|
||||
final List<ResolveInfo> infos = mPm.getPackageManager().queryIntentActivities(
|
||||
DefaultEmergencyPreferenceController.QUERY_INTENT, 0);
|
||||
PackageInfo bestMatch = null;
|
||||
final Context context = getContext();
|
||||
for (ResolveInfo info : infos) {
|
||||
try {
|
||||
final PackageInfo packageInfo =
|
||||
mPm.getPackageManager().getPackageInfo(info.activityInfo.packageName, 0);
|
||||
final ApplicationInfo appInfo = packageInfo.applicationInfo;
|
||||
candidates.add(new DefaultAppInfo(mPm, appInfo));
|
||||
candidates.add(new DefaultAppInfo(context, mPm, appInfo));
|
||||
// Get earliest installed system app.
|
||||
if (isSystemApp(appInfo) && (bestMatch == null ||
|
||||
bestMatch.firstInstallTime > packageInfo.firstInstallTime)) {
|
||||
|
@@ -53,6 +53,7 @@ public class DefaultHomePicker extends DefaultAppPickerFragment {
|
||||
final boolean mustSupportManagedProfile = hasManagedProfile();
|
||||
final List<DefaultAppInfo> candidates = new ArrayList<>();
|
||||
final List<ResolveInfo> homeActivities = new ArrayList<>();
|
||||
final Context context = getContext();
|
||||
mPm.getHomeActivities(homeActivities);
|
||||
|
||||
for (ResolveInfo resolveInfo : homeActivities) {
|
||||
@@ -71,7 +72,7 @@ public class DefaultHomePicker extends DefaultAppPickerFragment {
|
||||
summary = null;
|
||||
}
|
||||
final DefaultAppInfo candidate =
|
||||
new DefaultAppInfo(mPm, mUserId, activityName, summary, enabled);
|
||||
new DefaultAppInfo(context, mPm, mUserId, activityName, summary, enabled);
|
||||
candidates.add(candidate);
|
||||
}
|
||||
return candidates;
|
||||
|
@@ -61,11 +61,12 @@ public class DefaultHomePreferenceController extends DefaultAppPreferenceControl
|
||||
final ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
|
||||
final ComponentName currentDefaultHome = mPackageManager.getHomeActivities(homeActivities);
|
||||
if (currentDefaultHome != null) {
|
||||
return new DefaultAppInfo(mPackageManager, mUserId, currentDefaultHome);
|
||||
return new DefaultAppInfo(mContext, mPackageManager, mUserId, currentDefaultHome);
|
||||
}
|
||||
final ActivityInfo onlyAppInfo = getOnlyAppInfo();
|
||||
if (onlyAppInfo != null) {
|
||||
return new DefaultAppInfo(mPackageManager, mUserId, onlyAppInfo.getComponentName());
|
||||
return new DefaultAppInfo(mContext, mPackageManager, mUserId,
|
||||
onlyAppInfo.getComponentName());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@@ -48,9 +48,10 @@ public class DefaultPhonePicker extends DefaultAppPickerFragment {
|
||||
final List<DefaultAppInfo> candidates = new ArrayList<>();
|
||||
final List<String> dialerPackages =
|
||||
DefaultDialerManager.getInstalledDialerApplications(getContext(), mUserId);
|
||||
final Context context = getContext();
|
||||
for (String packageName : dialerPackages) {
|
||||
try {
|
||||
candidates.add(new DefaultAppInfo(mPm,
|
||||
candidates.add(new DefaultAppInfo(context, mPm,
|
||||
mPm.getApplicationInfoAsUser(packageName, 0, mUserId)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// Skip unknown packages.
|
||||
|
@@ -57,7 +57,7 @@ public class DefaultPhonePreferenceController extends DefaultAppPreferenceContro
|
||||
@Override
|
||||
protected DefaultAppInfo getDefaultAppInfo() {
|
||||
try {
|
||||
return new DefaultAppInfo(mPackageManager,
|
||||
return new DefaultAppInfo(mContext, mPackageManager,
|
||||
mPackageManager.getPackageManager().getApplicationInfo(
|
||||
DefaultDialerManager.getDefaultDialerApplication(mContext, mUserId),
|
||||
0));
|
||||
|
@@ -41,13 +41,14 @@ public class DefaultSmsPicker extends DefaultAppPickerFragment {
|
||||
|
||||
@Override
|
||||
protected List<DefaultAppInfo> getCandidates() {
|
||||
final Context context = getContext();
|
||||
final Collection<SmsApplication.SmsApplicationData> smsApplications =
|
||||
SmsApplication.getApplicationCollection(getContext());
|
||||
SmsApplication.getApplicationCollection(context);
|
||||
final List<DefaultAppInfo> candidates = new ArrayList<>(smsApplications.size());
|
||||
|
||||
for (SmsApplication.SmsApplicationData smsApplicationData : smsApplications) {
|
||||
try {
|
||||
candidates.add(new DefaultAppInfo(mPm,
|
||||
candidates.add(new DefaultAppInfo(context, mPm,
|
||||
mPm.getApplicationInfoAsUser(smsApplicationData.mPackageName, 0, mUserId)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// Skip unknown packages.
|
||||
|
@@ -47,7 +47,7 @@ public class DefaultSmsPreferenceController extends DefaultAppPreferenceControll
|
||||
protected DefaultAppInfo getDefaultAppInfo() {
|
||||
final ComponentName app = SmsApplication.getDefaultSmsApplication(mContext, true);
|
||||
if (app != null) {
|
||||
return new DefaultAppInfo(mPackageManager, mUserId, app);
|
||||
return new DefaultAppInfo(mContext, mPackageManager, mUserId, app);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
Reference in New Issue
Block a user