Get app info with correct user id.
- when querying app info from package manager, we should use the methods that takes the user id so that it will work properly with managed profile. Change-Id: Ifc84d3a29aaf7b2c1acfa096596a53f1715cc908 Fixes: 117222623 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -62,7 +62,7 @@ public class DefaultBrowserPicker extends DefaultAppPickerFragment {
|
||||
|
||||
for (ResolveInfo info : list) {
|
||||
try {
|
||||
candidates.add(new DefaultAppInfo(context, mPm,
|
||||
candidates.add(new DefaultAppInfo(context, mPm, mUserId,
|
||||
mPm.getApplicationInfoAsUser(info.activityInfo.packageName, 0, mUserId)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// Skip unknown packages.
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.util.ArraySet;
|
||||
import android.util.IconDrawableFactory;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settingslib.applications.DefaultAppInfo;
|
||||
@@ -75,8 +76,8 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
||||
try {
|
||||
final String packageName = mPackageManager.getDefaultBrowserPackageNameAsUser(mUserId);
|
||||
Log.d(TAG, "Get default browser package: " + packageName);
|
||||
return new DefaultAppInfo(mContext, mPackageManager,
|
||||
mPackageManager.getApplicationInfo(packageName, 0));
|
||||
return new DefaultAppInfo(mContext, mPackageManager, mUserId,
|
||||
mPackageManager.getApplicationInfoAsUser(packageName, 0, mUserId));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
@@ -143,7 +144,8 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
||||
return null;
|
||||
}
|
||||
|
||||
private Drawable getOnlyAppIcon() {
|
||||
@VisibleForTesting
|
||||
Drawable getOnlyAppIcon() {
|
||||
final List<ResolveInfo> list = getCandidates(mPackageManager, mUserId);
|
||||
if (list != null && list.size() == 1) {
|
||||
final ResolveInfo info = list.get(0);
|
||||
@@ -154,7 +156,7 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
||||
}
|
||||
final ApplicationInfo appInfo;
|
||||
try {
|
||||
appInfo = mPackageManager.getApplicationInfo(packageName, 0);
|
||||
appInfo = mPackageManager.getApplicationInfoAsUser(packageName, 0, mUserId);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
Log.w(TAG, "Error getting app info for " + packageName);
|
||||
return null;
|
||||
@@ -169,11 +171,11 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
||||
/**
|
||||
* Whether or not the pkg contains browser capability
|
||||
*/
|
||||
public static boolean hasBrowserPreference(String pkg, Context context) {
|
||||
public static boolean hasBrowserPreference(String pkg, Context context, int userId) {
|
||||
final Intent intent = new Intent(BROWSE_PROBE);
|
||||
intent.setPackage(pkg);
|
||||
final List<ResolveInfo> resolveInfos =
|
||||
context.getPackageManager().queryIntentActivities(intent, 0);
|
||||
final List<ResolveInfo> resolveInfos = context.getPackageManager()
|
||||
.queryIntentActivitiesAsUser(intent, 0 /* flags */, userId);
|
||||
return resolveInfos != null && resolveInfos.size() != 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ public class DefaultEmergencyPicker extends DefaultAppPickerFragment {
|
||||
final PackageInfo packageInfo =
|
||||
mPm.getPackageInfo(info.activityInfo.packageName, 0);
|
||||
final ApplicationInfo appInfo = packageInfo.applicationInfo;
|
||||
candidates.add(new DefaultAppInfo(context, mPm, appInfo));
|
||||
candidates.add(new DefaultAppInfo(context, mPm, mUserId, appInfo));
|
||||
// Get earliest installed system app.
|
||||
if (isSystemApp(appInfo) && (bestMatch == null ||
|
||||
bestMatch.firstInstallTime > packageInfo.firstInstallTime)) {
|
||||
|
||||
@@ -58,7 +58,7 @@ public class DefaultPhonePicker extends DefaultAppPickerFragment {
|
||||
final Context context = getContext();
|
||||
for (String packageName : dialerPackages) {
|
||||
try {
|
||||
candidates.add(new DefaultAppInfo(context, mPm,
|
||||
candidates.add(new DefaultAppInfo(context, mPm, mUserId,
|
||||
mPm.getApplicationInfoAsUser(packageName, 0, mUserId)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// Skip unknown packages.
|
||||
|
||||
@@ -59,7 +59,8 @@ public class DefaultPhonePreferenceController extends DefaultAppPreferenceContro
|
||||
@Override
|
||||
protected DefaultAppInfo getDefaultAppInfo() {
|
||||
try {
|
||||
return new DefaultAppInfo(mContext, mPackageManager, mPackageManager.getApplicationInfo(
|
||||
return new DefaultAppInfo(mContext, mPackageManager, mUserId,
|
||||
mPackageManager.getApplicationInfo(
|
||||
DefaultDialerManager.getDefaultDialerApplication(mContext, mUserId), 0));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return null;
|
||||
|
||||
@@ -55,7 +55,7 @@ public class DefaultSmsPicker extends DefaultAppPickerFragment {
|
||||
|
||||
for (SmsApplication.SmsApplicationData smsApplicationData : smsApplications) {
|
||||
try {
|
||||
candidates.add(new DefaultAppInfo(context, mPm,
|
||||
candidates.add(new DefaultAppInfo(context, mPm, mUserId,
|
||||
mPm.getApplicationInfoAsUser(smsApplicationData.mPackageName, 0, mUserId)));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
// Skip unknown packages.
|
||||
|
||||
Reference in New Issue
Block a user