Obtenga la aplicación preferida / predeterminada en Android

stoy tratando de obtener la aplicación predeterminada / preferida para una @ daIntent. Por ejemplo, cuando el usuario instala un segundo navegador web, luego intenta abrir una URL, obtendrá un diálogo como este:

Si el usuario selecciona laUsar de forma predeterminada para esta acció, el cuadro de diálogo ya no se abre cuando se presiona una URL.

Estoy trabajando en una aplicación que debería estar al tanto de lo que estadefect oprivilegiad app / action es. ¿Cómo hago esto? Actualmente estoy usando el siguiente código, perogetPreferredPackage no devuelve nada:

Intent i = (new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com"));
PackageManager pm = context.getPackageManager();
final List<ResolveInfo> list = pm.queryIntentActivities(i, 0);
IntentFilter ifilter = new IntentFilter(i.getAction());
if (i.getCategories() != null) {
    for(String category : i.getCategories()) {
        ifilter.addCategory(category);
    }
}
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(ifilter);
List<ComponentName> preferredActivities = new ArrayList<ComponentName>();
pm.getPreferredActivities(filters, preferredActivities, null);
for (ComponentName activity : preferredActivities) {
    for (ResolveInfo rinfo : list) {
        if (rinfo.activityInfo.applicationInfo.packageName.equals(activity.getPackageName())) {
            try {
                final PackageInfo pi = pm.getPackageInfo(activity.getPackageName(), 0);
                Toast.makeText(context, pm.getApplicationLabel(pi.applicationInfo), Toast.LENGTH_SHORT).show();
            }
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
    }
}

¿Qué estoy haciendo mal? ¿Es este incluso el enfoque correcto?

Respuestas a la pregunta(6)

Su respuesta a la pregunta