2012-09-09 27 views
6

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

班测试1:

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

回答

9

也许你可以播放一个意图来调用它。

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

使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(); 
     } 
    } 
} 

注册接收器类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); 
    ... 
} 
+0

问题:我必须在两个应用程序中都有ActionReceiver类吗? –

3

如果你想从APP1发送回调APP 2:

  1. 你应该从APP1数据抛出自己Intent 。 (看看PendingIntent)。
  2. 进入你的app2你应该注册BroadcastReceiver这将处理你的app1的Intents
  3. broadcastreceiver的onReceive方法(在app2中)每当你的Intent被app1抛出并被app2抛出时,都会被调用。 (把你的逻辑放在那里)
相关问题