Merge "Create an API for browser app checking." into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-06-04 08:12:09 +00:00
committed by Android (Google) Code Review

View File

@@ -19,10 +19,13 @@ package com.android.settingslib.applications;
import android.app.Application;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.hardware.usb.IUsbManager;
import android.net.Uri;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -44,6 +47,15 @@ public class AppUtils {
*/
private static InstantAppDataProvider sInstantAppDataProvider = null;
private static final Intent sBrowserIntent;
static {
sBrowserIntent = new Intent()
.setAction(Intent.ACTION_VIEW)
.addCategory(Intent.CATEGORY_BROWSABLE)
.setData(Uri.parse("http:"));
}
public static CharSequence getLaunchByDefaultSummary(ApplicationsState.AppEntry appEntry,
IUsbManager usbManager, PackageManager pm, Context context) {
String packageName = appEntry.info.packageName;
@@ -153,4 +165,22 @@ public class AppUtils {
return com.android.settingslib.utils.applications.AppUtils.getAppContentDescription(context,
packageName, userId);
}
/**
* Returns a boolean indicating whether a given package is a browser app.
*
* An app is a "browser" if it has an activity resolution that wound up
* marked with the 'handleAllWebDataURI' flag.
*/
public static boolean isBrowserApp(Context context, String packageName, int userId) {
sBrowserIntent.setPackage(packageName);
final List<ResolveInfo> list = context.getPackageManager().queryIntentActivitiesAsUser(
sBrowserIntent, PackageManager.MATCH_ALL, userId);
for (ResolveInfo info : list) {
if (info.activityInfo != null && info.handleAllWebDataURI) {
return true;
}
}
return false;
}
}