13

我有 2 个安卓应用程序。两者都安装在手机上。假设两者的包名称是 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);
    }
}

测试2类:

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

4 回答 4

14

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

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

进入BroadcastReceivercom.android.test2.Main2接收广播:

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

onCreate在类的方法中注册接收者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);
    ...
}
于 2012-09-09T13:11:40.790 回答
3

如果你想从 app1 向 app2 发送回调:

  1. 您应该Intent使用 app1 中的数据自行处理。(看看PendingIntent)。
  2. 进入您的 app2,您应该注册BroadcastReceiver将处理您的 app1 的Intents.
  3. onReceive每次当您的 Intent 被 app1 抛出并被 app2 捕获时,将调用广播接收器的 方法(在 app2 中)。(把你的逻辑放在那里)
于 2012-09-09T13:27:13.160 回答
2

为了在不同的应用程序之间调用方法,您需要使用Intent

你也需要intent-filterBroadcastReceiver

于 2012-09-09T12:35:24.713 回答
0

您不能直接从另一个应用程序调用一个应用程序的方法。相反,您必须从另一个活动调用一个活动并使用 Intent 过滤器获取结果。

这些链接可能会对您有所帮助

http://www.vogella.com/articles/AndroidIntent/article.html

http://saigeethamn.blogspot.in/2009/08/android-developer-tutorial-for_31.html

于 2012-09-09T13:24:06.337 回答