2012-09-09 12 views
6

Ich habe 2 Android-Apps. Beide sind auf dem Telefon installiert. Sagen wir, der Paketname für die beiden sind com.android.test1 und com.android.test2. Wie kann ich die Methode Main2method() aus der Klasse test1.Main aufrufen?Android-Anruf-Methode von einer anderen App

Klasse für 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); 
    } 
} 

Klasse für 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.. 
    } 
} 

Antwort

9

Vielleicht können Sie eine Absicht senden, um sie anzurufen.

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

machen ein BroadcastReceiver in com.android.test1.Main2 die Sendung zu erhalten:

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

den Empfänger in onCreate Methode der Klasse Main1 registrieren:

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

Frage: Muss ich die ActionReceiver-Klasse in beiden Apps haben? –

3

helfen Wenn Sie Rückrufe von app1 senden möchten app2:

  1. Sie Ihre eigenen Intent mit Daten aus app1 werfen sollte . (Betrachten Sie PendingIntent).
  2. in yout app2 sollten Sie registrieren BroadcastReceiver, die Ihre App1s Intents behandelt.
  3. broadcastreceivers onReceive Methode (in app2) wird jedes Mal aufgerufen, wenn Ihre Absicht von app1 ausgelöst und von app2 eingefangen wird. (setzen Sie Ihre Logiken dort)
Verwandte Themen