Refactor DefaultAppPicker to a general radio button picker

Bug: 36557316
Test: make RunSettingsRoboTests
Change-Id: I52985e527e55697cf29f8d97d775d4bbed025beb
This commit is contained in:
Fan Zhang
2017-03-23 11:03:29 -07:00
parent b3f13f9f32
commit a278962dbc
37 changed files with 580 additions and 398 deletions

View File

@@ -26,91 +26,101 @@ import android.graphics.drawable.Drawable;
import android.os.RemoteException;
import android.os.UserHandle;
import com.android.settings.applications.PackageManagerWrapper;
import com.android.settings.widget.RadioButtonPickerFragment;
/**
* Data model representing an app in DefaultAppPicker UI.
*/
public class DefaultAppInfo {
public class DefaultAppInfo extends RadioButtonPickerFragment.CandidateInfo {
public final int userId;
public final ComponentName componentName;
public final PackageItemInfo packageItemInfo;
public final String summary;
public final boolean enabled;
protected final PackageManagerWrapper mPm;
public DefaultAppInfo(int uid, ComponentName cn) {
this(uid, cn, null /* summary */);
public DefaultAppInfo(PackageManagerWrapper pm, int uid, ComponentName cn) {
this(pm, uid, cn, null /* summary */);
}
public DefaultAppInfo(int uid, ComponentName cn, String summary) {
this(uid, cn, summary, true /* enabled */);
public DefaultAppInfo(PackageManagerWrapper pm, int uid, ComponentName cn, String summary) {
this(pm, uid, cn, summary, true /* enabled */);
}
public DefaultAppInfo(int uid, ComponentName cn, String summary, boolean enabled) {
public DefaultAppInfo(PackageManagerWrapper pm, int uid, ComponentName cn, String summary,
boolean enabled) {
super(enabled);
mPm = pm;
packageItemInfo = null;
userId = uid;
componentName = cn;
this.summary = summary;
this.enabled = enabled;
}
public DefaultAppInfo(PackageItemInfo info, String summary, boolean enabled) {
public DefaultAppInfo(PackageManagerWrapper pm, PackageItemInfo info, String summary,
boolean enabled) {
super(enabled);
mPm = pm;
userId = UserHandle.myUserId();
packageItemInfo = info;
componentName = null;
this.summary = summary;
this.enabled = enabled;
}
public DefaultAppInfo(PackageItemInfo info) {
this(info, null /* summary */, true /* enabled */);
public DefaultAppInfo(PackageManagerWrapper pm, PackageItemInfo info) {
this(pm, info, null /* summary */, true /* enabled */);
}
public CharSequence loadLabel(PackageManager pm) {
@Override
public CharSequence loadLabel() {
if (componentName != null) {
try {
final ActivityInfo actInfo = AppGlobals.getPackageManager().getActivityInfo(
componentName, 0, userId);
if (actInfo != null) {
return actInfo.loadLabel(pm);
return actInfo.loadLabel(mPm.getPackageManager());
} else {
final ApplicationInfo appInfo = pm.getApplicationInfoAsUser(
final ApplicationInfo appInfo = mPm.getApplicationInfoAsUser(
componentName.getPackageName(), 0, userId);
return appInfo.loadLabel(pm);
return appInfo.loadLabel(mPm.getPackageManager());
}
} catch (RemoteException | PackageManager.NameNotFoundException e) {
return null;
}
} else if (packageItemInfo != null) {
return packageItemInfo.loadLabel(pm);
return packageItemInfo.loadLabel(mPm.getPackageManager());
} else {
return null;
}
}
public Drawable loadIcon(PackageManager pm) {
@Override
public Drawable loadIcon() {
if (componentName != null) {
try {
final ActivityInfo actInfo = AppGlobals.getPackageManager().getActivityInfo(
componentName, 0, userId);
if (actInfo != null) {
return actInfo.loadIcon(pm);
return actInfo.loadIcon(mPm.getPackageManager());
} else {
final ApplicationInfo appInfo = pm.getApplicationInfoAsUser(
final ApplicationInfo appInfo = mPm.getApplicationInfoAsUser(
componentName.getPackageName(), 0, userId);
return appInfo.loadIcon(pm);
return appInfo.loadIcon(mPm.getPackageManager());
}
} catch (RemoteException | PackageManager.NameNotFoundException e) {
return null;
}
}
if (packageItemInfo != null) {
return packageItemInfo.loadIcon(pm);
return packageItemInfo.loadIcon(mPm.getPackageManager());
} else {
return null;
}
}
@Override
public String getKey() {
if (componentName != null) {
return componentName.flattenToString();