来自其他应用的Android通话方法

Ano*_*m.. 10 methods static android package

我有2个Android应用程序.两者都安装在手机上.让我们说两者的包名是com.android.test1和com.android.test2.我如何Main2method()从test1.Main类调用该方法?

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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..
    }
}
Run Code Online (Sandbox Code Playgroud)

Sim*_*Liu 13

也许你可以广播一个Intent来调用它.

Intent it = new Intent("com.android.test2.Main2method");
context.sendBroadcast(it)
Run Code Online (Sandbox Code Playgroud)

在com.android.test1.Main2中创建一个BroadcastReceiver来接收广播:

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

在Main1类的onCreate方法中注册接收器:

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

    receiver = new ActionReceiver();
    IntentFilter filter = new IntentFilter();
    filter.addAction("com.android.test2.Main2method");
    registerReceiver(receiver, filter);
    ...
}
Run Code Online (Sandbox Code Playgroud)