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.

  • Cómo enviar datos de IntentService a clase Non-Activity
  • IntentService onHandleIntent () sigue funcionando después de onDestroy () despedido
  • ¿Cómo mantener un IntentService funcionando incluso cuando la aplicación está cerrada?
  • Android AlarmManager para continuar después de reiniciar / eliminado de RecentTaskManager
  • ¿Cómo notificar la actividad sobre los cambios en la variable global en la aplicación?
  • Android IntentService Error de instancia
  • Android: El servicio de intento anidado no se inicia después de llamar a Context.startService ()
  • Java.lang.RuntimeException no puede instanciar servicio: java.lang.NullPointerException
  • Deteniendo un IntentService de una actividad
  • NetworkOnMainThreadException en IntentService
  • Múltiples instancias de IntentService en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.