Merge "Hide "Open by default" entirely for browser apps" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f420d0f310
@@ -20,11 +20,8 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO
|
||||
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.util.ArraySet;
|
||||
@@ -37,8 +34,7 @@ import androidx.preference.Preference;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
|
||||
import java.util.List;
|
||||
import com.android.settingslib.applications.AppUtils;
|
||||
|
||||
public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListener,
|
||||
Preference.OnPreferenceChangeListener {
|
||||
@@ -49,15 +45,6 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe
|
||||
private static final String FRAGMENT_OPEN_SUPPORTED_LINKS =
|
||||
"com.android.settings.applications.OpenSupportedLinks";
|
||||
|
||||
private static final Intent sBrowserIntent;
|
||||
|
||||
static {
|
||||
sBrowserIntent = new Intent()
|
||||
.setAction(Intent.ACTION_VIEW)
|
||||
.addCategory(Intent.CATEGORY_BROWSABLE)
|
||||
.setData(Uri.parse("http:"));
|
||||
}
|
||||
|
||||
private PackageManager mPm;
|
||||
|
||||
private boolean mIsBrowser;
|
||||
@@ -90,7 +77,7 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe
|
||||
|
||||
mPm = getActivity().getPackageManager();
|
||||
|
||||
mIsBrowser = isBrowserApp(mPackageName);
|
||||
mIsBrowser = AppUtils.isBrowserApp(this.getContext(), mPackageName, UserHandle.myUserId());
|
||||
mHasDomainUrls =
|
||||
(mAppEntry.info.privateFlags & ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS) != 0;
|
||||
|
||||
@@ -108,22 +95,6 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe
|
||||
}
|
||||
}
|
||||
|
||||
// An app is a "browser" if it has an activity resolution that wound up
|
||||
// marked with the 'handleAllWebDataURI' flag.
|
||||
private boolean isBrowserApp(String packageName) {
|
||||
sBrowserIntent.setPackage(packageName);
|
||||
List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(sBrowserIntent,
|
||||
PackageManager.MATCH_ALL, UserHandle.myUserId());
|
||||
final int count = list.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
ResolveInfo info = list.get(i);
|
||||
if (info.activityInfo != null && info.handleAllWebDataURI) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private int linkStateToResourceId(int state) {
|
||||
switch (state) {
|
||||
case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS:
|
||||
|
@@ -150,7 +150,11 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
||||
installer.setParentFragment(this);
|
||||
use(AppInstallerPreferenceCategoryController.class).setChildren(Arrays.asList(installer));
|
||||
use(AppNotificationPreferenceController.class).setParentFragment(this);
|
||||
use(AppOpenByDefaultPreferenceController.class).setParentFragment(this);
|
||||
|
||||
use(AppOpenByDefaultPreferenceController.class)
|
||||
.setPackageName(packageName)
|
||||
.setParentFragment(this);
|
||||
|
||||
use(AppPermissionPreferenceController.class).setParentFragment(this);
|
||||
use(AppPermissionPreferenceController.class).setPackageName(packageName);
|
||||
use(AppSettingPreferenceController.class)
|
||||
|
@@ -22,6 +22,7 @@ import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.hardware.usb.IUsbManager;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.UserHandle;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
@@ -35,6 +36,7 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr
|
||||
|
||||
private IUsbManager mUsbManager;
|
||||
private PackageManager mPackageManager;
|
||||
private String mPackageName;
|
||||
|
||||
public AppOpenByDefaultPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -42,6 +44,12 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr
|
||||
mPackageManager = context.getPackageManager();
|
||||
}
|
||||
|
||||
/** Set a package name for this controller. */
|
||||
public AppOpenByDefaultPreferenceController setPackageName(String packageName) {
|
||||
mPackageName = packageName;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
@@ -57,7 +65,9 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
final PackageInfo packageInfo = mParent.getPackageInfo();
|
||||
if (packageInfo != null && !AppUtils.isInstant(packageInfo.applicationInfo)) {
|
||||
if (packageInfo != null && !AppUtils.isInstant(packageInfo.applicationInfo)
|
||||
&& !AppUtils.isBrowserApp(mContext, packageInfo.packageName,
|
||||
UserHandle.myUserId())) {
|
||||
preference.setVisible(true);
|
||||
preference.setSummary(AppUtils.getLaunchByDefaultSummary(mParent.getAppEntry(),
|
||||
mUsbManager, mPackageManager, mContext));
|
||||
@@ -70,5 +80,4 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr
|
||||
protected Class<? extends SettingsPreferenceFragment> getDetailFragmentClass() {
|
||||
return AppLaunchSettings.class;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user