Evitar el cambio de orden de la presentación de la aplicación Android después del lanzamiento del servicio intencional

Tengo la situación siguiente: Una aplicación principal es la aplicación del lanzador (A) , siempre la aplicación está funcionando , y esta aplicación llama otra una aplicación del niño (B) fig 1. El problema se produce cuando la aplicación (A) inicia un intent service y la aplicación (B) utiliza esta intención (fig 2).

Este es el código utilizado para iniciar el servicio de intenciones:

Servicio

 intentCodeRead.putExtra(BARCODE_TEXT, readStr); intentCodeRead.putExtra(BARCODE_DATE, System.currentTimeMillis()); intentCodeRead.setFlags(Intent.FLAG_RECEIVER_FOREGROUND); sendBroadcast(intentCodeRead); 

¿Alguna sugerencia de banderas para evitar este comportamiento? Figura 1 aplicación Una aplicación de llamada B

Figura 2 aplicación B contexto cambiante con A

EDITAR 1

En la aplicación (A) (la aplicación del lanzador) tengo un intentService que hizo una broadcast a otras aplicaciones. La aplicación (B) es una aplicación que escucha esta emisión. Cuando (A) haga una emisión la aplicación (B) escuche entonces. El problema es que (A) traer a frente de (B) cuando (A) hacer esta difusión. ¿Cómo puedo hacer una broadcast sin cambiar el orden de presentación de las aplicaciones?

EDIT 2

Aplicación A

BarcodeScannerService.java

 intentCodeRead.putExtra(Constants.BARCODE_TEXT, readStr); intentCodeRead.putExtra(Constants.BARCODE_DATE, System.currentTimeMillis()); intentCodeRead.setFlags(Intent.FLAG_RECEIVER_FOREGROUND); sendBroadcast(intentCodeRead); 

Initservice.java

 Intent intentService = new Intent(context, BarcodeScannerService.class); context.startService(intentService); 

Aplicación B

Recibir java

 BroadcastReceiver actionBarcodeScannerAndPresenceReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { /* Receiver for the barcode scan and presence sensor events */ if (intent.getAction().equals(Constants.ACTION_PRESENCE)) { try { Log.e("Sensor Presenca","Detectada"); } catch (Exception e) { Toast.makeText(getApplicationContext(), "Ocorreu um erro no sensor de presença", Toast.LENGTH_LONG).show(); e.printStackTrace(); } } else if (intent.getAction().equals(Constants.ACTION_ON_BARCODE)) { try { String scannedText = intent.getStringExtra(Constants.BARCODE_TEXT); if(scannedText.equals("0123456789")) { barcodeResult.setText(scannedText); barcodeResult.setTextColor(getResources().getColor(R.color.green)); //Thread.sleep(5000); ReturnResult("BARCODE", 0); }else{ barcodeResult.setText(scannedText); barcodeResult.setTextColor(getResources().getColor(R.color.red)); //Thread.sleep(5000); ReturnResult("BARCODE", 1); } } catch (Exception e){ Toast.makeText(getApplicationContext(), "Ocorreu um erro ao ler o código de barras!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } } } 

Este código funciona bien. El único problema es, siempre cuando (A) envíe el mensaje de broadcast que la aplicación (A) trae al frente de (B) . ¿Cuáles son las banderas o los métodos para evitar esto?

One Solution collect form web for “Evitar el cambio de orden de la presentación de la aplicación Android después del lanzamiento del servicio intencional”

Mi solución para este problema fue utilizar ActivityManager para llevar a la parte frontal la aplicación que la actividad de broadcast enviar a fondo. El siguiente código fue utilizado y fue adaptado de Android, ¿cómo llevar una tarea al primer plano?

 ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); for (int i = 0; i < recentTasks.size(); i++) { if (!recentTasks.get(i).baseActivity.toShortString().contains("your_class_to_be_avoid")) { activityManager.moveTaskToFront(recentTasks.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME); } } 

En este código estoy enviar a primer plano cada aplicación que es diferente a mi aplicación principal.

  • IntentService onHandleIntent () sigue funcionando después de onDestroy () despedido
  • Cómo obtener el contexto en un servicio de intención
  • Cómo manejar correctamente startForegrounds dos notificaciones
  • Deteniendo un IntentService
  • Enviar las actualizaciones de la ubicación a IntentService
  • Cómo crear tostadas de IntentService? Se queda atascado en la pantalla
  • ¿Qué hacer si el sistema operativo ha matado a un IntentService?
  • Android: mantener el servicio en ejecución cuando se mata la aplicación
  • ¿Cómo hacer que WakefulService (IntentService) espere hasta que MediaPlayer termine?
  • Reschedule IntentService con AlarmManager - se ignora la información adicional intencional
  • Android cómo comprobar si el servicio de intenciones sigue funcionando o si ha dejado de funcionar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.