2012-09-09 13 views
6

Mam 2 aplikacje na Androida. Oba są zainstalowane na telefonie. Powiedzmy, że nazwa pakietu dla tych dwóch to com.android.test1 i com.android.test2. Jak mogę wywołać metodę Main2method() z klasy test1.Main?Metoda połączeń Android z innej aplikacji

Klasa dla 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); 
    } 
} 

Klasa dla 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.. 
    } 
} 

Odpowiedz

9

Może możesz transmitować intencję, aby do niego zadzwonić.

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

dokonać BroadcastReceiver w com.android.test1.Main2 otrzymywać nadanie:

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

zarejestrować słuchawkę w metodzie onCreate klasy Main1:

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

Pytanie: Czy muszę mieć klasę ActionReceiver w obu aplikacjach? –

3

Jeśli chcesz wysłać zwrotnych od APP1 do APP2:

  1. należy wyrzucić swoją Intent danymi z APP1 . (spójrz na PendingIntent).
  2. do yout app2 powinieneś zarejestrować się pod numerem BroadcastReceiver, który zajmie się twoją aplikacją Intents.
  3. Metoda broadcastodceiver's onReceive (w app2) będzie wywoływana za każdym razem, gdy Twój zamiar zostanie zgłoszony przez app1 i catched przez app2. (umieść tam swoją logikę)
Powiązane problemy