Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo excluir una aplicación específica de ACTION_VIEW?

Estoy intentando cargar una URL de twitter en el navegador.

En mi teléfono, ya he instalado la aplicación de Twitter también. Estoy intentando abrir la URL usando la intención de ACTION_VIEW . Pero lo que sucede es, cuando llamo intención, android mostrará el diálogo predeterminado del selector, que contiene la aplicación de Twitter también (si está instalado en el dispositivo). Quiero abrir la URL sólo con navegadores. Quiero excluir la aplicación de Twitter del diálogo . Quiero que todos los navegadores disponibles en el dispositivo aparezcan en el diálogo, no aplicaciones nativas como twitter, facebook, etc.

¿Es posible o no? Si es posible, ¿podría alguien ayudarme a lograrlo? También adjunto mi código y una captura de pantalla junto con esta pregunta para mayor claridad.

 String url = "https://twitter.com"; MimeTypeMap map = MimeTypeMap.getSingleton(); String type = map.getMimeTypeFromExtension(url); Intent i = new Intent(Intent.ACTION_VIEW); i.setType(type); i.setData(Uri.parse(url)); startActivity(i); 

Introduzca aquí la descripción de la imagen

  • Mostrando todos los eventos de difusión en Android
  • Usar putExtra para pasar valores al servicio de intenciones
  • Haga clic en la notificación de Android mediante programación
  • ¿Es seguro reutilizar una intención?
  • Compruebe la conexión a Internet de INTENT
  • Android: BroadcastReceiver intención de detectar la foto de la cámara tomada?
  • ¿Puede el inicio de un servicio de intención varias veces en sucesión rápida causar extras nulos?
  • ¿Cómo borrar correctamente los datos de intenciones de la actividad SingleTop?
  • 2 Solutions collect form web for “¿Cómo excluir una aplicación específica de ACTION_VIEW?”

    Necesitaba hacer algo similar y encontré esta respuesta útil. Lo he modificado para que sea una solución completa:

     public static void openFileWithInstalledAppExceptCurrentApp(File file, final Activity activity) { Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); MimeTypeMap mime = MimeTypeMap.getSingleton(); String ext = file.getName().substring(file.getName().indexOf(".")+1); String type = mime.getMimeTypeFromExtension(ext); intent.setDataAndType(Uri.fromFile(file),type); PackageManager packageManager = activity.getPackageManager(); List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); String packageNameToHide = "com.test.app"; ArrayList<Intent> targetIntents = new ArrayList<Intent>(); for (ResolveInfo currentInfo : activities) { String packageName = currentInfo.activityInfo.packageName; if (!packageNameToHide.equals(packageName)) { Intent targetIntent = new Intent(android.content.Intent.ACTION_VIEW); targetIntent.setDataAndType(Uri.fromFile(file),type); targetIntent.setPackage(packageName); targetIntents.add(targetIntent); } } if(targetIntents.size() > 0) { Intent chooserIntent = Intent.createChooser(targetIntents.remove(0), "Open file with"); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetIntents.toArray(new Parcelable[] {})); activity.startActivity(chooserIntent); } else { Toast.makeText(this, "No app found", Toast.LENGTH_SHORT).show(); } } 

    Sólo tiene que establecer el paquete de destino a la intención:

     String url = "https://twitter.com"; MimeTypeMap map = MimeTypeMap.getSingleton(); String type = map.getMimeTypeFromExtension(url); Intent i = new Intent(Intent.ACTION_VIEW); i.setType(type); i.setData(Uri.parse(url)); ComponentName comp = new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"); i.setComponent(comp); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    Sin embargo, los usuarios mi ser molestado si tienen algún navegador personalizado instalado y desea utilizar esto como predeterminado.

    Puede intentar detectar el navegador predeterminado con:

     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://example.com")); List<ResolveInfo> list = context.getPackageManager() .queryIntentActivities(i, 0); // walk through list and select your most favorite browser 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.