Search code examples
androidmethodsstaticpackage

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

Solution

  • 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);
        ...
    }