Datos que pasan a otra aplicación en Android

Tengo dos Aplicaciones de Android (Aplicación A, Aplicación B) como se muestra en la siguiente figura. Quiero llamar a la aplicación B haciendo clic en el botón de la primera aplicación A y cuando se inicia la aplicación B, el cuadro de texto contendrá el texto que quiero pasar de la aplicación A.

**Nota-

  1. Tengo acceso de la Aplicación A para poder modificar el código de la Aplicación A. No tengo acceso a la solicitud B.

  2. He visto muchos post en Stackoverflow.com y otros sitios que explican pasar los datos a la segunda aplicación, pero vi que sólo es posible cuando se tiene acceso a modificar el código de ambas clases. Aquí en mi caso no tengo acceso a la aplicación 2, es sólo un APK que se instala en mi teléfono.

  3. Quiero implementar como lo hicimos en automatizar una página web a través de Selenium donde podemos acceder a un campo de texto e ingresar valor en ese campo de texto y.

  4. Aplicación B sólo por ejemplo. Puede ser cualquier aplicación que tenga cuadros de texto.

  5. En realidad, quiero automatizar el proceso de inicio de sesión de una aplicación (Applicaion B) con la ayuda de la Aplicación A. La Aplicación A tiene un número de credenciales y seleccionando una credencial de la Aplicación A lanzará la Aplicación B e ingresará la credencial a la pantalla de inicio de sesión De la Aplicación B. **

Introduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagen

Espero poder explicar mi problem.If algo más de entrada requieren puedo explicar.

Usted tiene 2 opciones:

  • La aplicación B espera una entrada (por intención). A continuación, puede iniciar la aplicación B y pasar el valor mediante la intención:

    intent.putExtra("Key", "Your data here"); 

    Necesita saber qué clave utiliza la aplicación B, de lo contrario no podrá hacerlo.

  • La aplicación B no espera una entrada . Esto no es fácil y requiere el acceso root al teléfono:

    Con el permiso INJECT_EVENTS es posible escribir texto o enviar clics a cualquier ventana. Puedes hacerlo:

     Instrumentation m_Instrumentation = new Instrumentation(); m_Instrumentation.sendKeyDownUpSync( KeyEvent.KEYCODE_B ); //send key B 

    Puede encontrar más información sobre este tema aquí . Si necesitas ayuda para compilar tu aplicación, estos dos enlaces te ayudarán a: Cómo compilar la aplicación de Android con permisos del sistema , el permiso de Android INJECT_EVENTS

Pasar los datos a la siguiente intención. Y luego obtenerlo desde la otra aplicación.

 PackageManager pm = context.getPackageManager(); Intent appStartIntent = pm.getLaunchIntentForPackage(appPackageName); context.startActivity(appStartIntent); 

No creo que esto sea posible ya que no tiene ningún control sobre la aplicación B.Como hay varias maneras de enviar datos a la aplicación B de A (intención, proveedor de contenido y recievers de difusión, etc), pero usted no sabe B Aceptar esos valores o no y manipular los puntos de vista de acuerdo con los datos que ha enviado de A, ya que no tiene ningún control sobre el B.

Sólo voy a darle un heads-up para que usted pueda pasar los datos entre dos aplicaciones que usted tiene el control sobre ellos, entonces usted debe usar la intent por ejemplo

 intent.putExtra("MyData", "This is a data "); 

Y en su otra aplicación use esto para obtener estos datos

  Bundle extras = getIntent().getExtras(); if (extras != null) { String value = extras.getString("MyData"); myText.setText(value); } 

A menos que otra aplicación haya configurado una intención de recibir el valor de otra aplicación, no se puede hacer. Si tiene que hacerlo, aplique el APK de B del ingeniero inverso, a continuación, agregue la intención implícita de manejar las formas de datos que necesita y cree un nuevo APK

Si usted está tratando de escribir pruebas o hacer algo de manera automatizada (similar a WebDriver scirpts) puede utilizar MonkeyRunner http://developer.android.com/tools/help/monkeyrunner_concepts.html pero que se conecta remotamente a un dispositivo más Adb desde un equipo host.

Dependiendo de cómo la aplicación B rellena los datos en esos campos de entrada es posible que pueda interactuar con el proveedor de contenido de la aplicación B. Es probable que desee comunicarse con el autor de la solicitud B en ese caso.

A partir de la API 18 existe la clase UiAutomation, que puede enviar eventos personalizados a otras aplicaciones sin necesidad de permiso INJECT_EVENTS.

Para obtener más información, consulte http://developer.android.com/reference/android/app/Instrumentation.html#getUiAutomation ()

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.