¿Cómo puedo crear un diálogo creado por Intent.createChooser () cancelable?

¿Cómo puedo crear un diálogo creado por Intent.createChooser() cancelable? En otras palabras: cuando estoy tocando fuera de este diálogo, necesito que se cancele.

Por defecto funciona así. Pero en algunos dispositivos (como Samsung GT2) no es (este diálogo se puede cancelar sólo presionando el botón back ).

NOTA Estoy hablando del diálogo creado por Intent.createChooser() . No tengo referencia al Dialog mismo.

2 Solutions collect form web for “¿Cómo puedo crear un diálogo creado por Intent.createChooser () cancelable?”

Estoy de acuerdo con Yul – esto no es posible, excepto por la creación de su propio selector. queryIntentActivities() puede darte el contenido de la lista, y puedes diseñar tu diálogo como quieras. A continuación, se muestra un proyecto de ejemplo que utiliza queryIntentActivities() para rellenar un ListView de todas LAUNCHER actividades de LAUNCHER y, a continuación, utilizar esos datos para iniciar la entrada seleccionada.

Personalmente, ya que la mayoría de los dispositivos tendrán este comportamiento ya, no me molestaría. He estado usando Android desde los dispositivos originales, y no me había dado cuenta de que este diálogo era cancelable por otros medios que el botón Cancelar del diálogo (en los dispositivos más antiguos) y el botón ATRÁS hasta leer su pregunta. Soy escéptico de que su base de usuarios se ocupe de su aplicación que se comporta igual que todas las otras aplicaciones en su dispositivo en términos de comportamiento del selector.

Si usted está haciendo esto con startActivityForResult entonces usted puede obtener el resultCode y prueba para ver si es RESULT_CANCELED .

Hay más información sobre esto en la documentación de capacitación para obtener un resultado de una actividad y la documentación para la actividad en sí.

Mientras aprueba desvergonzadamente ejemplos de la documentación anterior, te mostraré cómo lo hago:

 static final int PICK_CONTACT_REQUEST = 1; private void pickContact() { Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); pickContactIntent.setType(Phone.CONTENT_TYPE); startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { ... } else if (resultCode == RESULT_CANCELED){ ... } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.