No se puede hacer startActivity () con Chooser preguntando una vez por aplicación

Cuando haces startActivity() con el selector, Android startActivity() todas las aplicaciones con derecho a manejar tu Intent junto con opciones para establecer esta asignación permanente o una vez (en ICS su botón de acción "Siempre" y "Sólo una vez" en 2.x Es la casilla de verificación). Sin embargo, para este código:

 public class Redirector { public static void showActivityWithChooser( Context context, int chooserLabelTitleId, Intent intent ) { try { context.startActivity( Intent.createChooser( intent, context.getResources().getString( chooserLabelTitleId )) ); } catch( Exception e ) { e.printStackTrace(); } } public static void viewInExternalApplication( Context context, String url ) { Intent intent = new Intent( Intent.ACTION_VIEW ); intent.setData( Uri.parse( url ) ); intent.addFlags( Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET ); showActivityWithChooser( context, R.string.open_chooser_title, intent ); } } 

No veo los botones "Siempre una vez" y no puedo hacer que mi selección sea permanente (solo tengo aplicaciones listadas y puedo dispararlas tocando). ¿Qué elemento elemental pasé por alto que hizo Android incapaz de hacer la elección del usuario persistente?

Vea las fotos: el cuadro de diálogo izquierdo es lo que me gustaría ver, pero lo correcto es lo que obtengo ahora (un número diferente de aplicaciones en ambos cuadros de diálogo es irrelevante):

Introduzca aquí la descripción de la imagen

One Solution collect form web for “No se puede hacer startActivity () con Chooser preguntando una vez por aplicación”

Para un registro – fue sobre-interpretación tipo de error (de la mía). El selector que estaba usando es exactamente lo que se puede ver en la imagen correcta. Y estaba apareciendo todo el tiempo porque … Lo estaba llamando todo el tiempo. Asumí incorrectamente que el selector ofrece la funcionalidad "Siempre una vez" y que no aparecería si el usuario pulsaba "Siempre" (y aparecerá si utilizó "Sólo una vez"). Pero está mal. Chooser siempre se mostrará porque ese es su papel – para que el usuario elija. La funcionalidad "Siempre una vez" es algo diferente: es una característica del framework de Android para las startActivity() y startActivityForResult() , y se mostrará automáticamente cuando sea necesario. Si hay más de una aplicación que puede manejar cierto Intent y No se mostrará si usted consiguió apenas uno o golpeó "siempre" la última vez. Usted, como desarrollador no necesita preocuparse.

Así que para solucionar esto, sólo cambié mi código viewInExternalApplication() para hacer que acaba de llamar startActivity() :

 try { context.startActivity( intent ); } catch (.... ) 

Y dejar que el marco de hacer el resto.

  • Iniciar intención "silenciosamente"
  • Creación de intentos con putExtra
  • Android Intent: -Use Intención de pasar objetos de clase de Activities
  • Cómo capturar un mensaje de texto entrante
  • Android-Libgdx, Llamando a Otra Actividad después de que el Juego comience en Button click
  • No se ha encontrado actividad para manejar la intención geográfica en el emulador
  • Aplicación SIP para Android, cómo usar servicios y actividades
  • Fragmento de la prensa de OnBack que muestra la pantalla en blanco
  • Propósito de envoltura en LabeledIntent para fines de visualización
  • Temporizador de cuenta atrás de Android hasta la fecha
  • Receptor de radiodifusión en fragmento no recibe intención de servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.