package jp.co.cyberagent.stf.util; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import java.util.List; import jp.co.cyberagent.stf.R; public class BrowserUtil { public static List<ResolveInfo> getBrowsers(Context context) { PackageManager pm = context.getPackageManager(); Intent query = new Intent(); query.setAction(Intent.ACTION_VIEW); query.setData(Uri.parse("http://localhost")); return pm.queryIntentActivities(query, 0); } public static ResolveInfo getDefaultBrowser(Context context) { PackageManager pm = context.getPackageManager(); Intent query = new Intent(); query.setAction(Intent.ACTION_VIEW); query.setData(Uri.parse("http://localhost")); ResolveInfo info = pm.resolveActivity(query, 0); if (info == null) { return info; } // Could be a Chooser if (info.activityInfo.packageName.equals("android")) { return null; } return info; } public static boolean isSameBrowser(ResolveInfo browserOne, ResolveInfo browserTwo) { return browserOne != null && browserTwo != null && browserOne.activityInfo != null && browserTwo.activityInfo != null && browserOne.activityInfo.packageName.equals(browserTwo.activityInfo.packageName) && browserOne.activityInfo.name.equals(browserTwo.activityInfo.name); } public static String getComponent(ResolveInfo info) { String packageName = info.activityInfo.packageName; String activityName = info.activityInfo.name; if (activityName.startsWith(packageName)) { return String.format("%s/%s", packageName, activityName.substring(packageName.length())); } return String.format("%s/%s", packageName, activityName); } }