2012-09-09 61 views
6

Tengo 2 aplicaciones de Android. Ambos están instalados en el teléfono. Digamos que el nombre del paquete para los dos es com.android.test1 y com.android.test2. ¿Cómo puedo llamar al método Main2method() desde la clase test1.Main?Método de llamada de Android desde otra aplicación

Clase de test1:

package com.android.test1; 
import android.app.Activity; 
import android.os.Bundle; 

public class Main extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

Clase de test2:

package com.android.test2; 
import android.app.Activity; 
import android.os.Bundle; 

public class Main2 extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public static void Main2method() { 
     //do something.. 
    } 
} 

Respuesta

9

Quizás puedas transmitir una intención para llamarlo.

Intent it = new Intent("com.android.test2.Main2method"); 
context.sendBroadcast(it) 

hacer una BroadcastReceiver en com.android.test1.Main2 para recibir la emisión:

public class ActionReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if ("com.android.test2.Main2method".equalsIgnoreCase(intent.getAction())) { 
      Main2method(); 
     } 
    } 
} 

registrar el receptor en el método onCreate de la clase Principal1:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 

    receiver = new ActionReceiver(); 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction("com.android.test2.Main2method"); 
    registerReceiver(receiver, filter); 
    ... 
} 
+0

Pregunta: ¿Tengo que tener la clase ActionReceiver en ambas aplicaciones? –

3

Si desea enviar las devoluciones de llamada de app1 a app2:

  1. usted debe lanzar su propio Intent con datos de app1 . (mira el PendingIntent).
  2. en su aplicación2 debe registrar BroadcastReceiver que se encargará de su aplicación1 Intents.
  3. Se llamará al método onReceive de broadcastreceiver (en la aplicación2) cada vez que su intención sea lanzada por app1 y atrapada por app2. (ponga sus lógicas allí)
Cuestiones relacionadas