Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android call method from another app

I have 2 android apps. Both are installed on the phone. Lets say the package name for the two are com.android.test1 and com.android.test2. How can i call the method Main2method() from the test1.Main class ?

Class for 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);
    }
}

Class for 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..
    }
}
like image 857
Anonym.. Avatar asked Sep 09 '12 12:09

Anonym..


2 Answers

Maybe you can broadcast an Intent to call it.

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

Make a BroadcastReceiver in com.android.test2.Main2 to receive the broadcast:

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

Register the receiver in onCreate method of class 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);
    ...
}
like image 125
Simon J. Liu Avatar answered Sep 18 '22 11:09

Simon J. Liu


If you want to send callbacks from app1 to app2:

  1. you should throw your own Intent with data from app1. (take look at PendingIntent).
  2. into yout app2 you should register BroadcastReceiver which will handle your app1's Intents.
  3. broadcastreceiver's onReceive method (in app2) will be called each time when your Intent will be thrown by app1 and catched by app2. (put your logics there)
like image 43
ashakirov Avatar answered Sep 18 '22 11:09

ashakirov