从另一个应用程序的Andr​​oid电话的方法应用程序、电话、方法、oid

2023-09-13 01:10:52 作者:硬妹大扎!

我有2个Android应用程序。两者都安装在手机上。比方说两个包的名称是com.android.test1和com.android.test2。我怎样才能调用该方法 Main2method()从test1.Main类?

有关测试1级:

 包com.android.test1;
进口android.app.Activity;
进口android.os.Bundle;

公共类主要扩展活动{

    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
    }
}
 

有关测试2级:

 包com.android.test2;
进口android.app.Activity;
进口android.os.Bundle;

公共类MAIN2延伸活动{

    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
    }

    公共静态无效Main2method(){
        //做一点事..
    }
}
 

解决方案

也许你可以播放一个Intent调用它。

 意图是=新的意向书(com.android.test2.Main2method);
context.sendBroadcast(IT)
 

请在com.android.test1.Main2一个BroadcastReceiver接收广播:

 公共类ActionReceiver扩展的BroadcastReceiver {
    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
        如果(com.android.test2.Main2method.equalsIgnoreCase(intent.getAction())){
            Main2method();
        }
    }
}
 

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

 公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    ...

    接收器=新ActionReceiver();
    IntentFilter的过滤器=新的IntentFilter();
    filter.addAction(com.android.test2.Main2method);
    registerReceiver(接收机,过滤器);
    ...
}
 

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

解决方案

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