¿Cómo detener una actividad en android usando la intención?
Creo que esta es una pregunta básica. ¿Existe alguna opción para detener una actividad mediante el uso de la intención.
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5554")); startActivity(intent);
Este es mi código. Me gustaría detener esta actividad (es decir, quiero dejar esta llamada) si el usuario está ocupado o algo así. ¿Qué puedo hacer por eso? He intentado esto:
- Detección de la aplicación de destino al enviar un intento
- Propósito de envoltura en LabeledIntent para fines de visualización
- Pausar la reproducción de medios de forma fiable en todo el sistema en Android
- La fuerza de la aplicación se cierra cuando google + no está instalado
- No se pudo administrar el error android.intent.package_ADDED y REMOVED al recuperar la ubicación mediante Fused Location API
if (condition) { Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5554")); startActivity(intent); }else { this.finish(); }
Pero de ninguna utilidad. ¿Alguien tiene una sugerencia?
- BroadcastReceiver con múltiples filtros o BroadcastReceivers múltiples?
- Navegador de lanzamiento de Android sin especificar una URL
- Intención de inicio para actividad-alias
- Cómo hacer una intención con múltiples acciones
- ¿Cómo conectar profundamente mi aplicación android a paytm y la aplicación freecharge?
- ¿Cómo usar un Android SearchView sin singleTop?
- Matar actividad cuando se trata de primer plano
- Cómo ejecutar una aplicación en primer plano en las versiones de Android inferiores a 5.1
Tuve este problema hace unos días, y estoy feliz de decirte que he encontrado una forma de evitar esto.
En primer lugar, a la actividad que quieres parar, agrega esto en el AndroidManifest.xml
:
android:launchMode="singleTop"
Voy a utilizar un ejemplo CheckBox. Cuando se comprueba, la actividad se inicia y cuando no se selecciona se eliminará la actividad.
Ejemplo La actividad A está llamando a la actividad B y luego matándola usando una intención.
Código para ser puesto en A:
checkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(A.this, B.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); if (enable.isChecked()) { intent.putExtra("keep", true); startActivity(intent); } else { intent.putExtra("keep", false); startActivity(intent); } } });
Código que se pondrá en B:
boolean keep; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.B); intent = this.getIntent(); boolean keep = intent.getExtras().getBoolean("keep"); if(keep==true) { //execute your code here } } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); keep = intent.getExtras().getBoolean("keep"); if(keep==false) { B.this.finish(); } }
Explicación: Lo que esto hace básicamente es, cuando se marca la casilla de verificación llama a la actividad y pasa un valor booleano, si es cierto que la actividad se mantiene viva y se lleva al primer plano. Ahora, si no pasa el flag singleTop
, muchas instancias de esta actividad serán creadas. singleTop
asegura que sólo se llama a la misma instancia. Ahora, cuando la casilla de verificación está desmarcada, se pasa un nuevo valor para keep, que se verifica en B. Si no se selecciona, la Actividad A pasará falso, y por lo tanto B se terminará de onNewIntent()
función onNewIntent()
.
¡Espero que ayude!
PS: también puedes cerrar la Actividad B de otra Actividad. Sólo use Si la otra actividad es C:
Intent intent = new Intent(C.this, B.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtra("keep", false); startActivity(intent);
Puede desactivar los datos de fondo de la tienda de reproducción y reproducir servicios para no entrar en la tienda de reproducción. Simplemente dirá: "NO PUEDE SER CARGADO" Esa es la única manera que encontré para detener la intención
- SharedUserId: seguro para cambiar cuando la aplicación ya está en el mercado?
- ¿Es posible crear un HashMap que sea Parcelable en Android?